在任何C ++项目中重用QtCore模块

时间:2011-11-02 12:03:44

标签: qt reusability

我对重新使用元对象系统和一般功能非常​​感兴趣,但并不确切知道:

  • QMetaObject :: invokeMethod()依赖于事件循环吗?
  • 我可以在没有QCoreApplication实例的情况下加载插件吗?
  • ...

非常感谢非qt应用程序/非主线程中此模块的一些使用限制列表。

更新:

我已将same question发布到Qt社区。

1 个答案:

答案 0 :(得分:0)

正在运行的事件循环是可选的,并且是每个线程。如果您不处理给定线程中的事件,则不需要它。

如果在调用此方法的线程中的对象上调用方法,则

invokeMethod不依赖于事件循环。如果在生成在其他线程中的对象上调用方法,则所述线程将需要运行事件循环,即使只是定期运行。毕竟,他们可以在定义明确的点上致电processEvents。跨线程槽调用等效于将事件发布到线程的事件队列。

我将检查插件机制是否在没有QCoreApplication实例的情况下工作,但是这个实例不会对你造成伤害。只是创造它并忘记它。你需要在主线程或任何线程中运行事件循环。

请注意QPluginLoaderQLibrary不同,您需要检查自己的需​​求并找出自己想要的内容。

非gui QCoreApplication can be created in an arbitrary thread,其事件循环可以在那里运行。在Windows上,也可以在任意线程中创建QApplication