我在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调用插槽