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

问题描述 投票:0回答:1

我在Qt遇到了问题。

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

在我的pthread中调用此函数时

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

然后Qt告诉我断言失败:

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

我能解决这个问题吗?

c++ qt
1个回答
0
投票

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

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

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

然后使用QMetaObject :: invoke调用插槽

© www.soinside.com 2019 - 2024. All rights reserved.