置百丈玄冰而崩裂,掷须臾池水而漂摇。

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

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

发表评论:

验证码