强强的个人技术博客 医技科室软件(PACS, RIS)码农

[Qt]模态窗口和非模态窗口

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);

2023年9月10日 | 发布:强强 | 分类:QT | 评论:0

发表留言: