【问题标题】:How to use gtkmm without main arguments (argc/argv)?如何在没有主要参数(argc/argv)的情况下使用 gtkmm?
【发布时间】:2023-03-19 20:02:01
【问题描述】:

我正在尝试运行 gtkmm3 应用程序,但它不起作用! 我的代码: #包括 #包括

int main(void)
{
  Glib::RefPtr<Gtk::Application> app = Gtk::Application::create("org.gtkmm.examples.base");

  Gtk::Window window;
  window.set_default_size(200, 200);

  return (app->run(window));
}

还有错误:

gtkmm:ERROR:application.cc:157:int Gtk::Application::run(Gtk::Window&): 断言失败: (m_argc) 1
20729 中止(核心转储)./a.out

gdb 告诉我“app->run(window)”失败。

doc 表示有两个构造函数,一个带有 argc/argv,另一个没有。

如果我使用第一个构造函数,它可以工作,但由于 gtk,我无法向我的程序发送参数。

要编译,我使用:

g++ test.cpp `pkg-config gtkmm-3.0 --cflags --libs`

有什么问题?

【问题讨论】:

    标签: gtkmm


    【解决方案1】:

    我也有这个问题。我最终使用了下面示例中显示的解决方法。也许其他人可以为这个问题提供更好的解决方案。

    #include <gtkmm.h>
    
    int main(int argc, char *argv[])
    {
      argc = 1;
      Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.examples.base");
    
      Gtk::Window window;
      window.set_default_size(200, 200);
    
      return (app->run(window));
    }
    

    我对 Gtk::Application::create() 说谎,告诉它命令行中没有参数。这样您就可以自己处理(或忽略)命令行参数。如果您未将 argc 设置为 1 并且有参数,则应用程序将中止并显示消息“此应用程序无法打开文件”。我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      • 2020-06-26
      • 2011-04-25
      • 1970-01-01
      相关资源
      最近更新 更多