Qt 模态窗口和非模态窗口
1、模态窗口(系统会挂起,不可以其他操作)
QDialog dlg(this); dlg.exec(); qDebug() << "模态窗口";
关闭窗口后会写弹出日志
2、非模板窗口(系统不会挂起,系统会系统走流程)
QDialog *dlg =new QDialog(this); dlg->show(); qDebug() << "非模态窗口";
弹出窗口会直接写出日志
完整的代码:
#include "mainwindow.h" #include "ui_mainwindow.h" #include "QDialog" #include "QDebug" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); //模态窗口 connect(ui->btn1,&QPushButton::clicked,[=](){ QDialog dlg(this); dlg.resize(400,200); dlg.exec(); qDebug() << "模态窗口"; }); //非模态窗口 connect(ui->btn2,&QPushButton::clicked,[=](){ QDialog *dlg =new QDialog(this); dlg->resize(400,200); dlg->setAttribute(Qt::WA_DeleteOnClose); dlg->show(); qDebug() << "非模态窗口"; }); } MainWindow::~MainWindow() { delete ui; }
其他说明:委托事件关闭后会是否窗口
dlg->setAttribute(Qt::WA_DeleteOnClose);