我使用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) –