【问题标题】:c++ gtkmm 3.0 How to access argc, argvc++ gtkmm 3.0 如何访问argc、argv
【发布时间】:2013-04-09 18:16:51
【问题描述】:

我正在尝试为我的第一个 gtk 应用程序获得正确的结构,该应用程序将模拟棋盘游戏。我有一个命令行参数,它是一个文件名。 我将在我的 gtk 应用程序中阅读此文件。 如何访问 main() 之外的参数?

这是我的 main() 例程。

int main(int argc, char* argv[]) {
  Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example");
  ExampleWindow window;
return app->run(window);
}

这是 ExampleWindow 的构造函数:

ExampleWindow::ExampleWindow() {
  Board bd = Board(argv[1]);
...

我得到的错误是:

In constructor 'ExampleWindow::ExampleWindow()':
error: 'argv' was not declared in this scope

我想我的大部分逻辑都在 ExampleWindow 中,因为它会监听事件。将在 ExampleWindow 构造函数中实例化一个 Board 类,该构造函数将保存我的数据结构。 Board 类构造函数将文件名作为其构造函数的参数,读取描述文件,并根据文件输入设置成员变量。

我在这方面花了几个小时,发现文档稀少且令人困惑。我正在使用 gtk 3.0 并将我的程序基于绘制细线示例。 https://developer.gnome.org/gtkmm-tutorial/3.4/sec-cairo-drawing-lines.html.en

对 gtkmm 初学者的任何帮助将不胜感激。

【问题讨论】:

  • 这个“可能的”重复没有帮助。我试图在打开 gtk 窗口后获取命令行参数,而不是之前。他们还说“较新的 Gtk::Application”可能不支持命令行解析。有没有办法将命令行参数的值传递给 ExampleWIdow 构造函数?我尝试将其作为构造函数的参数,但出现了各种错误。

标签: c++ gtkmm


【解决方案1】:

也许我走错了路,但为什么你不将 argc/argv 传递给你的窗口类?

int main(int argc, char* argv[]) {
  Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv,     "org.gtkmm.example");
  ExampleWindow window(argc,argv);
return app->run(window);

}

ExampleWindow::ExampleWindow(int argc, char* argv[]) {
   Board bd = Board(argv[1]);

【讨论】:

    猜你喜欢
    • 2011-12-16
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 2013-02-02
    • 2023-03-19
    相关资源
    最近更新 更多