对话框分类 :
-
模态对话框 弹出后不能操作其他窗口 阻塞
-
QDialog dlg(this)
-
dlg.exec();
-
需求:点击new按钮,弹出对话框
代码如下:
···
connect(ui->actionnew,&QAction::triggered,[=](){ //新建一个对话框对象,接收信号并执行相应槽函数 //对话框分类 //模态对话框(弹出后不能操作其他窗口)、非模态对话框(弹出后,可以对其他窗口进行操作) //模态创建 QDialog dlg(this); dlg.exec();});
运行结果:(操作不了后面主窗口)
-
非模态对话框 弹出后,可以对其他窗口进行操作
-
防止一闪而过 创建到堆区 QDialog * dlg = new QDialog(this)
-
dlg->show();
-
dlg2->setAttribute(Qt::WA_DeleteOnClose); //不停点击new,会创建多个QDialog对象,导致内存泄露,设置属性,当关闭对话框时将其释放
-
代码如下:
···
connect(ui->actionnew,&QAction::triggered,[=](){ // QDialog dlg2(this);// 该对象创建在栈中,执行完lambda就销毁,对话框一闪而过 // dlg2.show(); //非模态 QDialog *dlg2 = new QDialog(this);//该对象创建在堆中 dlg2->show(); });
运行结果:(可以操作不了后面主窗口)