2012-08-29 135 views
0

我在Qt.I中創建了一個Gui線程和一個QTcpSocket線程,我想從QTcpSocket線程訪問數據
到Gui線程。如何解決它?
我需要聲明一些全局變量嗎?
Qt中的全局變量聲明

+0

你提到答案對你有幫助。您能否將最有用的答案標記爲已接受,以幫助後續訪問者進行討論?您可以通過點擊答案左側投票按鈕正下方的輪廓標記來接受答案。 –

回答

0

最簡單的方法是通過信號插槽連接進行通信。每個線程中都有一個QObject。發送對象有一個信號,它連接到另一個線程中的接收對象的插槽。

在此設置中,請確保將連接兩端的對象配置爲處於正確的線程中。您可能需要致電QObject::moveToThread()。 QObject也有一個屬性,您可以獲取當前線程(在這種情況下用於調試目的)。

然後照常建立信號槽連接。由於兩個對象都在不同的線程中,所以當信號被觸發時,一個時隙調用事件將被放置在接收標誌的事件循環中。這在Qt文檔中有解釋,請查找Qt::QueuedConnection

+0

非常感謝..非常幫助我。 – Jayeeta

0

QTcpSocket是從gui線程創建的。
所以在這一點上,gui線程有一個指向socket對象的指針。
然後它在gui中的插槽和插槽中的信號之間建立連接。
在套接字對象中,每當你獲得數據時,你只需發出一個包含數據的信號,這個信號將被gui線程拾取。

您可以非常有效地通過信號/插槽傳遞任何Qt類型,例如QString,QByteArray(或原始指針)。線程之間的信號的細節也是自動處理的。

+0

非常感謝..它幫助我.. – Jayeeta