Qt学习7——模态和非模态对话框
程序员文章站
2024-03-15 08:17:59
...
对话框分为
模态对话框(不可以对其他窗口进行操作)
非模态对话框(可以对其他窗口进行操作)
#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->actionnew,&QAction::triggered,[=](){
//模态对话框
QDialog *dlg=new QDialog(this);
dlg->resize(300,200);
dlg->exec();//阻塞
qDebug()<<"模态";
});
}
MainWindow::~MainWindow()
{
delete ui;
}
模态对话框通过
dlg->exec();//阻塞
1.阻塞到那行代码
此时运行点击新建无任何输出
2.
关闭后,会执行下面的代码,从而打印输出
二,非模态对话框
#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->actionnew,&QAction::triggered,[=](){
//非模态对话框
QDialog *dlg2=new QDialog(this);
dlg2->resize(300,200);
dlg2->show();
dlg2->setAttribute(Qt::WA_DeleteOnClose);
qDebug()<<"非模态";
});
}
MainWindow::~MainWindow()
{
delete ui;
}
运行后