没有QApplication或QCoreApplication的信号插槽连接

时间:2012-12-28 09:36:27

标签: windows qt dll

我想编写一个应该由非QT应用程序加载的DLL。因此,当我的DLL加载时,我没有任何QApplication/QCoreApplication。结果我的信号/插槽机制无法正常工作。

我在Qt论坛上深入搜索,但无法就如何处理这样的问题找到一个好的答案。我创建了一个QThread移动了我的QObjects到该线程并创建了一个假QApplicationCore并在QThread的exec()函数中调用了它的run()函数。这样我的信号槽机制就可以工作,但我对这种间接解决方案不满意。我应该能够从主非Qt线程的执行空间激活我的线程槽。使用这种dll插件的正确方法是什么?欢迎直接答案和阅读源重新考试。谢谢

注意:加载我的DLL的外部应用程序是一个Windows应用程序。这是第三方应用程序,我无法触摸它。

1 个答案:

答案 0 :(得分:5)

Qt信号& slot需要运行事件循环。您必须在QObject存在的线程中运行事件循环。当然你不能在你的应用程序的主线程中运行它(因为它不使用Qt),所以,正确,启动QThread,将你的QObject移动到这个线程(或者在run()中创建这些对象方法)并在线程的exec()方法中运行run()是一个正确的解决方案。

相关问题