C++ 必须在Qt中的主线程错误中创建小部件
我的Qt有问题 我有一个需要显示Qt对话框的外部pthread。 我已经创建了一个类C++ 必须在Qt中的主线程错误中创建小部件,c++,qt,C++,Qt,我的Qt有问题 我有一个需要显示Qt对话框的外部pthread。 我已经创建了一个类WindowsManager,它包含一个静态函数来显示Qt对话框:WindowsManager::ShowDialog() 在pthread中调用此函数时 void* task(void*) { WindowsManager::ShowDialog(); } 然后Qt向我显示一个断言失败: 小部件必须在主线程中创建 我可以绕过这个问题吗?将WindowsManager ShowDialog设置为一个插槽
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这将无法正常运行。对象上的方法需要在正确的线程中调用!然而,发送信号是可行的。