对话框分类
模态对话框(不可以对其他窗口进行操作、阻塞)
QDialog dig(this) 创建对话框
dlg.exec() 弹出模态对话框,阻塞进程
非模态对话框 可以对其他窗口进行操作
防止一闪而过 创建到堆区
QDialog *dlg = new QDialog(this)
dig->show() 弹出非模态对话框,不阻塞
dlg2->setAttribute()Qt::WA_DeteteOnClose);//55号属性,防止不断创建、关闭导致内存泄露
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//点击新建按钮,弹出一个对话框
connect(ui->actionnew, &QAction::triggered, this, [=](){
//弹出对话框
//对话框分类:模态(不能对其他窗口操作,除非关闭)和非模态对话框(可以对其他窗口操作)
//模态的创建
this->setFixedSize(800, 800);
QDialog dlg(this);
dlg.resize(500, 500);
dlg.exec(); //模态方式创建,可以 阻塞程序
qDebug()<<"模态对话框弹出";
//非模态方式创建
QDialog *dlg2 = new QDialog(this);//堆上申请空间,防止该Lambda运行完被释放
dlg2->resize(400, 400);
dlg2->show();//非模态方式创建
dlg2->setAttribute(Qt::WA_DeleteOnClose);//当不断创建对象,关闭对象,可能内存泄露
qDebug()<<"非模态对话框弹出";
});
}