13
我需要知道我的函數在哪個線程中運行,它是主GUI線程還是某個工作線程。在Qt庫中檢測GUI線程
我不能使用一個簡單的解決方案來存儲QThread指針在主函數中,並將其與QThread :: currentThread()進行比較,因爲我正在編寫一個庫,並且我無法訪問主函數。我當然可以創建InitMyLibary()函數,並要求庫用戶在GUI線程的上下文中調用它,但我真的是。
我需要知道我的函數在哪個線程中運行,它是主GUI線程還是某個工作線程。在Qt庫中檢測GUI線程
我不能使用一個簡單的解決方案來存儲QThread指針在主函數中,並將其與QThread :: currentThread()進行比較,因爲我正在編寫一個庫,並且我無法訪問主函數。我當然可以創建InitMyLibary()函數,並要求庫用戶在GUI線程的上下文中調用它,但我真的是。
如果你在lib中有Qt,你可以請求應用程序對象的線程。應用程序對象始終居於主要的GUI線程中。
void fooWorker()
{
const bool isGuiThread =
QThread::currentThread() == QCoreApplication::instance()->thread();
}
correct:QCoreApplication :: instance() - > thread()。我也會檢查實例()== 0。 – 2009-06-11 19:32:00