【发布时间】:2011-11-02 12:03:43
【问题描述】:
我对重用元对象系统和一般功能非常感兴趣,但不知道具体:
- QMetaObject::invokeMethod() 是否依赖于事件循环?
- 我可以在没有 QCoreApplication 实例的情况下加载插件吗?
- ...
非常感谢在非 qt 应用程序/非主线程中使用此模块的一些限制列表。
更新:
我已将same question 发布到 Qt 社区。p>
【问题讨论】:
标签: qt reusability
我对重用元对象系统和一般功能非常感兴趣,但不知道具体:
非常感谢在非 qt 应用程序/非主线程中使用此模块的一些限制列表。
更新:
我已将same question 发布到 Qt 社区。p>
【问题讨论】:
标签: qt reusability
正在运行的事件循环是可选的,并且是每个线程的。如果您不在给定线程中处理事件,则它不需要一个。
invokeMethod 不依赖于事件循环,如果您在调用此方法的线程中的对象上调用方法。如果您在其他线程中的对象上调用方法,则所述线程将需要运行事件循环,即使只是定期运行。毕竟,他们可以在明确定义的地点致电processEvents。跨线程槽调用相当于将一个事件发布到线程的事件队列中。
我会检查插件机制是否在没有QCoreApplication 实例的情况下工作,但这个实例不会对你造成任何伤害。只需创建它并忘记它。您不需要在主线程或任何线程中运行事件循环。
请注意QPluginLoader 与QLibrary 不同,您需要检查您的需求并确定您想要的。
一个非gui的QCoreApplicationcan be created in an arbitrary thread,它的事件循环可以在那里运行。在 Windows 上,QApplication 也可以在任意线程中创建。
【讨论】: