1、简介
- 模态对话款:弹出后,不可以对其他的窗口进行操作
- 非模态对话框:可以对其他窗口进行操作
2、创建代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDialog>
#include <QWidget>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//点击新建按钮弹出一个对话框
//actionnew是我们的一个工具栏的按钮
//triggered 触发,这里是没有clicked的
connect(ui->actionnew,&QAction::triggered,this,[](){
//创建后代码会停止执行,等待对话框进行操作
QDialog* qDialog = new QDialog(this);
//QDialog dia(this);
//对话框太小会提出警告,我们指定大小就可以解决
//警告内容: setGeometry: Unable to set geometry 100x30+911+500 on QWidgetWindow/'QDialogClassWindow'.
//警告内容: Resulting geometry: 180x30+911+500 (frame: 11, 45, 11, 11, custom margin: 0, 0, 0, 0, minimum size: 0x0, maximum size: 16777215x16777215).
qDialog->resize(400,200);
qDialog->exec(); //模态处理
//创建非模态的对话框
QDialog* qDialog2 = new QDialog(this);
qDialog2->resize(450,200);
//不过只写这些内容就运行是会出问题的,因为关掉它并不会自己释放内存
//设置关闭清除自己的内存
qDialog2->setAttribute(Qt::WA_DeleteOnClose); //int值为55
qDialog2->show(); //非模态处理
});
}
MainWindow::~MainWindow()
{
delete ui;
}
3、运行
可以看到在非模态对话框时,我点击了主窗口时,主窗口边缘高亮了。