簡體   English   中英

必須在Qt中的主線程中創建窗口小部件錯誤

[英]Widgets must be created in the main thread error in Qt

我在Qt中有問題。

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

在我的pthread中調用此函數時

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

然后Qt向我顯示斷言失敗:

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

我可以解決這個問題嗎?

將WindowsManager ShowDialog設置為插槽,將從當前線程中調用該插槽。

假設已創建WindowsManager,請將WindowsManager類移至主線程:-

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

然后使用QMetaObject :: invoke調用插槽

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM