qt5--模态对话框和非模态对话框

视频教程:https://www.bilibili.com/video/av51766541/?p=20  

#include "win.h"
#include <QMenuBar>
#include <QToolBar>
#include <QDebug>
#include <QDialog>  //对话框类

Win::Win(QWidget *parent)
    : QMainWindow(parent)
{
    this->resize(500,400);
    QMenuBar* bar=menuBar(); 
    this->setMenuBar(bar);
    QMenu* fileMenu=bar->addMenu("文件");
    QMenu* editMenu=bar->addMenu("编辑");
    QAction* newAction=fileMenu->addAction("新建"); 
    QAction* openAction=fileMenu->addAction("打开");
    QToolBar* toolbar=new QToolBar(this);
    addToolBar(Qt::LeftToolBarArea,toolbar);
    toolbar->addAction(newAction);
    toolbar->addAction(openAction);

    connect(newAction,&QAction::triggered,this,[=](){
        //QDialog dlg(this);  //创建一个对话框

        //dlg.exec();//显示对话框--模态---阻塞
        QDialog* dlg=new QDialog(this);//创建一个对话框
dlg->show();//显示对话框--非模态---非阻塞 

//注意:QDialog dlg(this)创建的dlg,lambda函数结束,dlg也就自动销毁了,所以一闪而过 //采用了new方法 dlg->setAttribute(Qt::WA_DeleteOnClose);//设置对话框属性 //Qt::WA_DeleteOnClose 窗口关闭时,dlg对象随之销毁 qDebug()<<"点击了行为按钮"; }); } Win::~Win() { }

原文地址:https://www.cnblogs.com/liming19680104/p/11474130.html