问题
之前在分析Qt事件循环源码时,相比很多人都会有疑问,当主线程(GUI 线程)在接受到某些命令时会弹出一个对话框,这个对话框会阻塞主界面的响应,这时候是不是有个子线程在处理弹出对话框的消息(毕竟这和多线程处理很像)?
概念普及
什么是模态对话框?
对于用户分成模态对话框和非模态对话框(如下解释源于百度百科)
模态对话框:又叫做模式对话框,是指在用户想要对对话框以外的应用程序进行操作时,必须首先对该对话框进行响应。如单击【确定】或【取消】按钮等将该对话框关闭。非模态对话框:又叫做无模式对话框,当用户打开非模态对话框时,依然可以操作其他窗口。例如,Windows提供的记事本程序中的【查找】对话框。【查找】对话框不会垄断用户的输入,打开【查找】对话框后,仍可与其他用户界面对象进行交互。
Qt中的模态对话框
模态对话框,会阻塞当前主界面及其他窗体,后续代码必须等到当前窗体关闭后方可执行
QDialog* pDialog = new QDialog(this);
pDialog->setWindowTitle(QString::fromUtf8("模态对话框"));
//以模态方法显示对话框
pDialog->exec();
// 关闭模态对话框后,才会继续执行下面的代码
qDebug() |