点击某按钮,弹出一个对话框
- 点击,弹出:信号和槽:connect(ui->actionNew,&QAction::triggered,[=](){}
- 模态对话框(不可以对其他窗口进行操作):
- 模态的创建(阻塞操作):QDialog dlg(this)
- 调整大小:dlg.resize(200,100)
- 执行:dlg.exec()
- 打印输出:qDebug()<<"模态对话框弹出了"
- 非模态的方式创建
- 这种方式创建是在栈上,随着函数执行完,栈空间释放会一闪而过:QDialog dlg2(this) dlg2.show()
- 堆上创建:QDialog * dlg2 = new QDialog(this)
- 调整大小:dlg2->resize(200,100)
- 展示:dlg2->show()
- 资源释放是当窗口关闭才释放,为了避免打开太多而崩溃,关闭对话框时释放内存 :dlg2->setAttribute(Qt::WA_DeleteOnClose)
- 打印输出:qDebug()<<"非模态对话框弹出了"
mainwindow.cpp
#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,[=](){
//Lambda表达式
//对话框分类
//模态对话框(不可以对其他窗口进行操作)
//非模态对话框(弹出此对话框后依然可以对其他窗口进行操作)
/* //模态的创建(阻塞操作)
QDialog dlg(this);
//调整大小
dlg.resize(200,100);
dlg.exec();
qDebug()<<"模态对话框弹出了";
*/
//非模态的方式创建
//这种方式创建是在栈上,随着函数执行完,栈空间释放会一闪而过
// QDialog dlg2(this);
// dlg2.show();
//堆上创建
QDialog * dlg2 = new QDialog(this);
dlg2->resize(200,100);
dlg2->show();
//资源释放是当窗口关闭才释放,为了避免打开太多而崩溃,关闭对话框时释放内存
dlg2->setAttribute(Qt::WA_DeleteOnClose);
qDebug()<<"非模态对话框弹出了";
});
}
MainWindow::~MainWindow()
{
delete ui;
}