为什么std :: thread无法打开QT对话框?

din*_*ino 0 qt c++11 stdthread

我想在std :: thread中打开一个简单的QT对话框,但是在对话框打开成功后崩溃。

std::thread([&](){
    DialogWarning* dlg=new DialogWarning();
    dlg->setModal(true);
    dlg->exec();
    delete dlg;
}).detach();
Run Code Online (Sandbox Code Playgroud)

此代码有什么问题?

Mar*_*cak 5

UI组件只能从主线程(也称为GUI线程)打开。

线程基础开始 Qt 5.13

Qt GUI必须在此[主]线程中运行。所有小部件和几个相关类(例如QPixmap)在辅助线程中均不起作用。