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

C++ 必须在Qt中的主线程错误中创建小部件,c++,qt,C++,Qt,我的Qt有问题 我有一个需要显示Qt对话框的外部pthread。 我已经创建了一个类WindowsManager,它包含一个静态函数来显示Qt对话框:WindowsManager::ShowDialog() 在pthread中调用此函数时 void* task(void*) { WindowsManager::ShowDialog(); } 然后Qt向我显示一个断言失败: 小部件必须在主线程中创建 我可以绕过这个问题吗?将WindowsManager ShowDialog设置为一个插槽

我的Qt有问题

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

在pthread中调用此函数时

void* task(void*)
{
    WindowsManager::ShowDialog();
}
然后Qt向我显示一个断言失败:

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


我可以绕过这个问题吗?

将WindowsManager ShowDialog设置为一个插槽,它将从当前线程调用

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

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

然后使用QMetaObject::invoke调用插槽在主线程中创建小部件并与要调用的线程共享它
widget->ShowDialog()
?@Theolodis这将无法正常运行。对象上的方法需要在正确的线程中调用!然而,发送信号是可行的。