我在Qt.I中創建了一個Gui線程和一個QTcpSocket線程,我想從QTcpSocket線程訪問數據
到Gui線程。如何解決它?
我需要聲明一些全局變量嗎?
Qt中的全局變量聲明
回答
最簡單的方法是通過信號插槽連接進行通信。每個線程中都有一個QObject。發送對象有一個信號,它連接到另一個線程中的接收對象的插槽。
在此設置中,請確保將連接兩端的對象配置爲處於正確的線程中。您可能需要致電QObject::moveToThread()
。 QObject也有一個屬性,您可以獲取當前線程(在這種情況下用於調試目的)。
然後照常建立信號槽連接。由於兩個對象都在不同的線程中,所以當信號被觸發時,一個時隙調用事件將被放置在接收標誌的事件循環中。這在Qt文檔中有解釋,請查找Qt::QueuedConnection
。
非常感謝..非常幫助我。 – Jayeeta
QTcpSocket是從gui線程創建的。
所以在這一點上,gui線程有一個指向socket對象的指針。
然後它在gui中的插槽和插槽中的信號之間建立連接。
在套接字對象中,每當你獲得數據時,你只需發出一個包含數據的信號,這個信號將被gui線程拾取。
您可以非常有效地通過信號/插槽傳遞任何Qt類型,例如QString,QByteArray(或原始指針)。線程之間的信號的細節也是自動處理的。
非常感謝..它幫助我.. – Jayeeta
- 1. 聲明全局變量
- 2. 全局變量聲明
- 3. proc聲明中的Tcl全局變量
- 4. 全局變量在android中的聲明
- 5. 聲明Button1_Click中的全局變量
- 6. Eclipse:未明確聲明全局變量
- 7. 在Arduino中聲明全局變量
- 8. 在perl中聲明全局變量
- 9. 在ActionScript中聲明全局變量?
- 10. 在Matlab中聲明全局變量
- 11. 在coffescript中聲明全局變量
- 12. 在yacc中聲明全局變量
- 13. 在Java中聲明全局變量
- 14. 在全局變量中聲明查詢
- 15. 在Python中聲明全局變量類
- 16. 在Swift中聲明全局變量
- 17. 在vb中聲明全局變量
- 18. 聲明一個全局的Request.ServerVariable變量
- 19. 在全局頭文件中聲明一個全局變量?
- 20. 聲明全局靜態變量
- 21. JavaScript;我如何聲明變量全局?
- 22. 如何聲明全局變量?
- 23. 聲明和初始化全局變量
- 24. 如何聲明全局變量
- 25. 全局變量多重聲明
- 26. 無法用TypeScript聲明全局變量
- 27. MSAccess:全局與本地變量聲明
- 28. 如何正確聲明全局變量?
- 29. Android聲明全局變量片段
- 30. Oracle觸發器:聲明全局變量
你提到答案對你有幫助。您能否將最有用的答案標記爲已接受,以幫助後續訪問者進行討論?您可以通過點擊答案左側投票按鈕正下方的輪廓標記來接受答案。 –