QDialog模态框与非模态框
模态对话框:就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭。
非模态对话框:当被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互。
QDialog
一、生成模态对话框:
1、
QColorDialog colorDialog;//临时变量
colorDialog.exec();//阻塞
2、
QColorDialog* colorDialog = new QColorDialog(this);
colorDialog->setAttribute(Qt::WA_DeleteOnClose);//使对话框关闭时自动delete
colorDialog->setModal(true);
colorDialog->show();
二、生成非模态对话框
QColorDialog* colorDialog = new QColorDialog(this);
colorDialog->setAttribute(Qt::WA_DeleteOnClose);//使对话框关闭时自动delete
//colorDialog->setModal(false);//默认就是false,可以不要这句话
colorDialog->show();//此时对话框是非模态的,但是永远在主窗口前面
QWidget
一、模态
在QWidget子类构造函数中或外部设置:
setAttribute(Qt::WA_ShowModal, true);
二、非模态
直接show
PS:对于某些模态子窗口,当点击其后面的主窗口时,会发出叮叮~的响声,并且会模态框会抖动;而有些又毫无反应。
第一种是因为此模态框的父类就是this,而后面的是NULL
长风破浪会有时,直挂云帆济沧海!
可通过下方链接找到博主
https://www.cnblogs.com/judes/p/10875138.html