我想在std :: thread中打开一个简单的QT对话框,但是在对话框打开成功后崩溃。
std::thread([&](){
DialogWarning* dlg=new DialogWarning();
dlg->setModal(true);
dlg->exec();
delete dlg;
}).detach();
此代码有什么问题?
UI组件只能从主线程(也称为GUI线程)打开。
Qt GUI必须在此[[[main]线程中运行。所有小部件和几个相关类(例如QPixmap)在辅助线程中均不起作用。
但是,您可以通过在主线程中的emit
捕获线程中的slot
信号来解决此问题。然后,在您的插槽中,可以显示对话框。