打开模态对话框,不可以对其他窗口进行操作 是阻塞的
打开非模态对话框,可以对其他窗口进行操作 不会阻塞
Tips:
由于Lambda表达式=函数,创建于栈区,函数执行完成后即被释放,但是模态对话框时阻塞的所以明天看不会一闪而过的现象;而非模态框在栈上,会出现一闪而过的现象;
解决办法:通过new将非模态框创建在堆区
小问题:
由于是创建在堆区,虽然绑定到对象树上,系统会自动释放内存,但是点击模态框的关闭按钮并不会释放,当不断点击新建和关闭模态框时可能导致堆区内存泄露
解决:
设置属性WA_DeleteOnClose,当窗口关闭时,释放窗口资源
//点击新建 弹出对话框
//对话框分类
//模态对话框 不可以对其他窗口进行操作 阻塞
//非模态对话框 可以对其他窗口进行操作 非阻塞
connect(ui->actionNew,&QAction::triggered,[=](){
qDebug()<<"弹出对话框";
//创建模态对话框
QDialog dlg(this);
dlg.resize(180,40);//重设大小
dlg.exec();
//创建非模态对话框
QDialog *dlg = new QDialog(this);
dlg->resize(180,40);
dlg->show();
//设置属性 55号
dlg->setAttribute(Qt::WA_DeleteOnClose);