2014-03-26 21 views
0

我在Qt中遇到問題。必須在Qt中的主線程錯誤中創建小工具Qt

我有一個需要顯示Qt對話框的外部pthread。 我創建了一個類WindowsManager包含靜態函數來顯示一個Qt對話框:WindowsManager::ShowDialog()

當調用這個函數在我的並行線程

void* task(void*) 
{ 
    WindowsManager::ShowDialog(); 
} 

然後Qt的顯示我的斷言失敗:

必須在主線程中創建窗口小部件

我可以得到一個這個問題?

+0

在主線程創建窗口小部件並分享用線程調用'widget-> ShowDialog()'? – Theolodis

+1

@Theolodis這不會表現正確。對象上的方法需要在正確的線程中調用!然而發送信號的作品。 – ypnos

回答

0

使WindowsManager ShowDialog成爲一個插槽,它將從當前線程調用。

假設WindowsManager已經創建,移動WindowsManager類主線程: -

windowsManager->moveToThread(QApplication::instance()->thread()); 

然後調用與QMetaObject插槽::調用