2013-04-20 62 views
0

發射包含在我的程序內的定製線程不起作用。看起來我的線程沒有與主UI線程進行通信。在c#中我們有線程調度器來處理這個問題。 QT呢?不能從定義的線程發射到主UI線程

這個運行內螺紋:

void myThread::run(){ 

    while(1) 
    { 
     //do something 
     emit display("show the result"); //NOT WORKING, THOUGH CONNECTED 
    } 
} 

MyThread的XX; xx.start();

+0

您能否請張貼一些代碼?如何定義信號/插槽,連接/發射代碼。 – evilruff 2013-04-20 13:10:13

回答

0

這是因爲你似乎使用QThread錯誤。 QThread有一個事件循環,在你的情況下,事件循環在你的run()函數中被阻塞。

你應該做的是實現一個QObject,在其中放置要運行的代碼,然後創建一個香草QThread並使用QObject :: moveToThread()將您的QObject移動到該線程。然後你可以正常發送和接收信號,因爲QThread的事件循環沒有被阻塞。

請參閱:https://stackoverflow.com/a/13142366/856199