我使用boost线程从相机收集图像,每当新图像到达时我都会调用Qt信号。现在,当这个信号发出时,连接的插槽运行,我正在更新小部件控制来到我的插槽,但它不更新小部件,而它在控制台打印调试。我的问题是这个插槽是在主线程还是在线程发出信号以及如何实现所需的更新? 谢谢带升压线程的Qt更新GUI
回答
插槽将运行在创建Qt小部件的任何线程中。 Qt将在交叉线程信号和插槽上使用QueuedConnection。
编辑:这可能是有用的 signal qt from a non-qt thread, QueuedConnection
是否阻止了主线程?
没有主线程是常规运行。主要的问题是,因为主(GUI)线程负责绘制和更新的东西,我的SLOT在主线程中定义,为什么我不能更新它。我可以完成其他任务,除了与来自SLOT的GUI相关,这意味着SLOt由发射信号的线程运行。 (纠正我,如果我错了)你可以建议这个问题? –
你是否尝试强制连接使用Qt :: QueuedConnection而不是让它决定。我在这方面看到的一些讨论说这是必需的。我还没有尝试从自己的boost线程发出信号,所以我不确定是否需要。我知道这从QThread是不需要的,因为我在之前的应用程序中做过这些。 – drescherjm
是的,我也试过,但没有改变任何东西,可能是我将我的应用程序从提升转移到QThread。 –
- 1. 带升压的Qt项目
- 2. 升压C++线程
- 3. Qt - 缓慢的GUI - 线程
- 4. 如何强制Qt更新来自非主线程的GUI
- 5. 从线程更新Swing GUI
- 6. Java GUI线程和更新
- 7. 更新线程tkinter gui
- 8. 线程和更新GUI
- 9. GUI线程更新问题
- 10. 从子线程提供更新到Qt GUI
- 11. 强制Qt GUI更新
- 12. 升压线程与CLR
- 13. 升压ASIO多线程
- 14. 多线程和升压io_service
- 15. 升压线程和插座
- 16. 升压线程错误
- 17. 如何使升压线程池::线程
- 18. J#/ C#更新/刷新GUI线程
- 19. 从SVN更新升压波
- 20. 限制对Qt和升压线程本地存储
- 21. 如何更新线程内的JApplet GUI?
- 22. 升压IPC当量(QT?)
- 23. Qt:从另一个类和线程更新UI(带信号)
- 24. 带升压库的路径
- 25. 更新QLabel在非GUI线程连续
- 26. 创建一个GUI更新线程
- 27. gtkmm:从其他线程更新gui?
- 28. Python线程 - 更新GUI时崩溃
- 29. Java线程问题 - 更新GUI
- 30. 如何管理线程来更新GUI?
我从来没有使用boost,但Qt有一个非常干净和简单的线程接口:[QThread](http://doc.qt.nokia.com/4.7-snapshot/qthread.html) –