如何在基于Gtkmm的应用程序的插件中使用Qt小部件?

时间:2013-07-25 13:13:40

标签: c++ qt user-interface gtk gtkmm

我开发了一个基于Gtkmm的应用程序,可以通过插件机制扩展。 每个插件都必须定义一个show()方法

void MyExtension::show()
{
  // here the code of the extension
}

我正在尝试开发一个使用Qt小部件的插件。我是Qt的新手,但我尝试了以下简单的代码:

void MyExtension::show()
{
  int argc = 1;
  char argv1[] = "myapp";
  char* argv[] = { argv1, NULL };
  QApplication app(argc, argv);

  QMessageBox::question(NULL, "title", "what?", QMessageBox::Yes|QMessageBox::No);

  app.exec();
  app.exit();
}

此源代码构建完美,插件的第一次执行正常(显示对话框),但在第一次执行插件后,QApplication似乎扰乱了GTK事件循环。我收到这样的消息:

Gtk-CRITICAL **: IA__gtk_container_add: assertion `GTK_IS_CONTAINER (container)' failed

Gtk-CRITICAL **: IA__gtk_widget_realize: assertion `GTK_WIDGET_ANCHORED (widget) || GTK_IS_INVISIBLE (widget)' failed

并且应用程序在第三次或第四次执行插件时完全崩溃。

有任何想法用Qt小部件开发插件(=运行时加载的共享库),并插入Gtkmm应用程序? 非常感谢。

0 个答案:

没有答案