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

时间:2019-11-18 08:07:28

标签: qt c++11 stdthread

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

price

此代码有什么问题?

2 个答案:

答案 0 :(得分:5)

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

来自Threading basics | Qt 5.13

  

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

答案 1 :(得分:2)

@MarkoPacak正确提到了无法在其他线程中打开对话框的主要原因。

但是,解决该问题的方法是在线程中emit捕获一个信号,以供主线程中的slot捕获。然后,在您的插槽中,可以显示对话框。