必须在Qt中的主线程错误中创建窗口小部件

时间:2014-03-26 17:00:34

标签: c++ qt

我在Qt中遇到了问题。

我有一个需要显示Qt对话框的外部pthread。 我创建了一个类WindowsManager,其中包含一个静态函数来显示Qt对话框:WindowsManager::ShowDialog()

在我的pthread中调用此函数

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

然后Qt向我显示断言失败:

  

必须在主线程中创建小部件

我可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

使WindowsManager ShowDialog成为一个插槽,它将从当前线程调用。

假设已经创建了WindowsManager,请将WindowsManager类移动到主线程: -

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

然后使用QMetaObject :: invoke

调用插槽