08.Qt对话框Dialog和QMessageBox

本文深入探讨了Qt中对话框的应用,包括模态和非模态对话框的区别及实现方式,以及如何使用标准对话框如QMessageBox进行信息展示、警告、提问等交互。同时,介绍了如何通过QColorDialog选择颜色,以及使用QFileDialog打开文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意,使用lamda表达式的时候,需要在pro下面加入下面的东西,才能使用lamda表达式

CONFIG += c++11

QtDialog.pro

#-------------------------------------------------
#
# Project created by QtCreator 2019-09-18T02:49:41
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = 05_QtDialog
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

CONFIG += c++11

模态对话框
    Dialog dlg
    dlg.exec() 阻塞功能

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //点击新建菜单项 弹出对话框
    connect(ui->actionNew, &QAction::triggered, this, [=](){
        //对话框 有2种
        //模态对话框 (不可以对其他窗口进行操作) 非模态对话框(可以对其他窗口进行操作)
        QDialog dlg(this);
        dlg.resize(200, 300);
        dlg.exec();//阻塞的操作,只有将对话框关掉才能执行下面的操作


        qDebug() << "弹出对话框";
    });
}

非模态对话框
    Dialog dlg
    dlg.show() 会一闪而过 所以创建在堆上
    new dlg dlg->show()
    设置属性 55号 setAttribute(Qt::WA_DeleteOnClose)
 

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //点击新建菜单项 弹出对话框
    connect(ui->actionNew, &QAction::triggered, this, [=](){

        //对话框 有2种
        /*
        //模态对话框 (不可以对其他窗口进行操作) 非模态对话框(可以对其他窗口进行操作)
        QDialog dlg(this);
        dlg.resize(200, 300);
        dlg.exec();//阻塞的操作,只有将对话框关掉才能执行下面的操作
        qDebug() << "弹出对话框";
        */
        //QDialog  dlg2(this);//创建在栈上,闪一下
        QDialog * dialog= new QDialog(this);
        dialog->resize(200, 100);
        dialog->show();
        //需要设置属性
        dialog->setAttribute(Qt::WA_DeleteOnClose);
    });
}

标准对话框QMessageBox

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //点击新建菜单项 弹出对话框
    connect(ui->actionNew, &QAction::triggered, this, [=](){

        //使用标准的对话框QMessageBox,"错误"是标题,"critical"是内容
        //QMessageBox::critical(this, "错误", "critical");
        //信息对话框
        //QMessageBox::information(this,"信息","info");
        /*
        //询问对话框
        // 参数1 、父亲 2、标题 3、提示内容  4 按键类型 5 关联回车按键
         if(QMessageBox::Save == QMessageBox::question(this,"问题","question",QMessageBox::Save | QMessageBox::Cancel,QMessageBox::Cancel))
         {
            qDebug() << "点击的是保存";
         }
         else
         {
            qDebug() << "点击的是取消";
         }
         */
         //警告对话框
          //QMessageBox::warning(this,"警告!","warning");

         //选择颜色对话框
        //QColor color =  QColorDialog::getColor(QColor(255,0,0));
        // qDebug() << color.red() << color.green() << color.blue();

         //文件对话框,第二个参数是标题,第三个参数是默认打开的路径,第四个参数是过滤格式文件
         //返回值是选中的文件的的路径
         QString path =  QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\zhangtao\\Desktop","(*.txt *.png)");
         qDebug() << path;
    });
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值