2013-03-21 393 views
3

我正在研究多線程圖像處理應用程序。我在一個基於QT的GUI上添加了一些參數,這些參數我不得不多次嘗試,而不是每次啓動程序或輸入時都從設置文件中加載它們。我還希望GUI顯示每個線程的一些基本信息,以便我可以監視它們。我目前有設置圖像處理線程之間傳遞信息的線程安全方法,我希望能夠從QT線程每秒大約輪詢一些信息,以便在UI上顯示一些反饋。每秒鐘輪詢一次QT中的變量

我的要求是我不想將QT特定代碼合併到圖像處理線程中以更新UI。我寧願讓UI線程輪詢我當前用於在線程之間傳遞信息的方法。我希望我的代碼庫中的圖像處理部分獨立運行,而不必依靠QT來運行。我將如何輪詢全局可用函數來更新QT UI?

回答

8

QTimer是你的朋友。

QTimer *timer = new QTimer(this); 
connect(timer, SIGNAL(timeout()), &someQObjectDerivedClassInstance, SLOT(doYourThing())); 
timer->start(1000); 

或者在Qt5和C++ 11中,您可以直接連接到lambda。儘管使用插槽可以確保在連接到另一個線程中的對象時排隊連接。