我想創建一個由QWidget繼承的類的線程。其實,我嘗試過使用QThread進行多重繼承,但它失敗了,我想使用線程運行特定的成員函數。我怎樣才能做到這一點?有人有什麼主意嗎?如何爲QWidget繼承的類創建線程?
0
A
回答
0
一個解決方案可能是使用嵌套類,其中您將傳遞一個指向常規窗口小部件類的指針,以及您從嵌套的run方法中需要的所有所有方法。
2
你可以用它實現了線程並調用Widget的方法的包裝類:
class MyWidget : public QWidget
{
[...]
void threadMethod();
};
class MyThread : public QThread
{
[...]
MyThread(MyWidget* widget)
: mWidget(widget)
{
}
void run()
{
mWidget->threadMethod();
}
MyWidget* mWidget;
};
但是,你不應該調用「threadMethod」任何QWidget的方法,因爲它的GUI和,因此部件屬於到「主」線程,並且QWidget方法不是線程安全的!
它可能會更好地保持您的小部件和線程代碼完全分開。
0
屬於GUI模塊的Qt類不可重入。它們必須從主線程運行。
相關問題
- 1. 從QWidget繼承並創建類模板
- 2. 如何創建從QWidget繼承的qt插件
- 3. PyQt寫繼承QWidget
- 4. 如何從繼承父類創建unique_ptr
- 5. 繼承QLabel並在QWidget類中使用
- 6. 如何在PyQt中繼承QWidget?
- 7. 線程,繼承
- 8. 如何爲繼承IdentityUser的類創建主鍵
- 9. 我如何創建一個繼承Ellipse類的子類
- 10. 出錯創建繼承類的實例
- 11. 在包中創建繼承的類
- 12. 創建繼承類的對象
- 13. NullReferenceException創建繼承類的實例
- 14. 創建繼承模型的類
- 15. 創建一個繼承自UITextfield的類
- 16. 無法創建繼承類的集合
- 17. 創建從基類繼承的對象
- 18. 用Javascript創建一個超類(繼承)
- 19. 通過從QTreeView繼承創建類
- 20. 繼承問題。如何創建基類的多個實例?
- 21. 如何創建繼承CCLayer的可用基類?
- 22. 如何在由變量創建的新類中添加繼承
- 23. 如何繼承Java構建器類?
- 24. 繼承:將父類__init__參數創建爲子類
- 25. 如何從另一個繼承類的繼承類的說話
- 26. 如何創建一個繼承父級遠程的新分支
- 27. 如何創建繼承的Android應用程序?
- 28. 爲Django模板創建繼承圖/樹
- 29. 如何正確使用wxPython將值繼承到線程類中
- 30. 爲繼承創建ArrayList <Item>的子類
它是如何「失敗」?構建錯誤?運行時錯誤? – 2012-01-18 15:18:40
來自兩個QObject的多重繼承是一個禁忌。這是多重繼承中共同的祖先/鑽石問題的一個例子。 – hmn 2012-01-18 15:50:20
@ joachim:構建錯誤:它會拋出以下錯誤:錯誤C2385:'連接'的模糊訪問可能是基於'QObject'的'連接' 1>或者可能是基於'QObject'的'連接' – joki 2012-01-19 04:42:42