我在Qt中遇到了问题。
我有一个需要显示Qt对话框的外部pthread。
我创建了一个类WindowsManager
,其中包含一个静态函数来显示Qt对话框:WindowsManager::ShowDialog()
在我的pthread中调用此函数
void* task(void*)
{
WindowsManager::ShowDialog();
}
然后Qt向我显示断言失败:
必须在主线程中创建小部件
我可以解决这个问题吗?
答案 0 :(得分:0)
使WindowsManager ShowDialog成为一个插槽,它将从当前线程调用。
假设已经创建了WindowsManager,请将WindowsManager类移动到主线程: -
windowsManager->moveToThread(QApplication::instance()->thread());
然后使用QMetaObject :: invoke
调用插槽