2009-06-10 59 views
13

我需要知道我的函數在哪個線程中運行,它是主GUI線程還是某個工作線程。在Qt庫中檢測GUI線程

我不能使用一個簡單的解決方案來存儲QThread指針在主函數中,並將其與QThread :: currentThread()進行比較,因爲我正在編寫一個庫,並且我無法訪問主函數。我當然可以創建InitMyLibary()函數,並要求庫用戶在GUI線程的上下文中調用它,但我真的是

回答

23

如果你在lib中有Qt,你可以請求應用程序對象的線程。應用程序對象始終居於主要的GUI線程中。

void fooWorker() 
{ 
    const bool isGuiThread = 
     QThread::currentThread() == QCoreApplication::instance()->thread(); 

} 
+5

correct:QCoreApplication :: instance() - > thread()。我也會檢查實例()== 0。 – 2009-06-11 19:32:00