我想编写一个应该由非QT应用程序加载的DLL.因此,当我的DLL加载时,我没有任何QApplication/QCoreApplication
.结果我的信号/插槽机制无法正常工作.
我在Qt论坛深入搜索,但还没有找到一个关于如何处理这样一个问题的好答案.我创建了一个QThread
移动我的QObjects
线程并创建了一个假的,QApplicationCore
并exec()
在QThread的run()
函数内调用了它的函数.这样我的信号槽机制就可以工作,但我对这种间接解决方案不满意.我应该能够从主非Qt线程的执行空间激活我的线程槽.使用这种dll插件的正确方法是什么?欢迎直接答案和阅读源重新考试.谢谢
注意:加载我的DLL的外部应用程序是一个Windows应用程序.这是第三方应用程序,我无法触摸它.
Qt信号和插槽需要运行事件循环.您必须在QObject存在的线程中运行事件循环.当然你不能在你的应用程序的主线程中运行它(因为它不使用Qt),所以,正确的,启动QThread
,将你的QObject移动到这个线程(或在run()
方法中创建这些对象)并exec()
在线程的run()
方法中运行是正确的解.
归档时间: |
|
查看次数: |
2525 次 |
最近记录: |