《QT学习笔记 —— 15. QT中消息对话框和文件对话框》

一、消息对话框


在实际的程序开发过程中,经常会用到各种各样的消息框来为用户提供一些提示或提醒,Qt提供了QMessageBox类用于实现此功能。

常用的消息对话框包括 Question 消息框、Information 消息框、Warning 消息框、Critical 消息框、About(关于)消息框、Custom(自定义)消息框。这些消息框通常包含为用户提供一些提醒或一些简单询问用的一个图标、一条提示信息及若干个按钮。

 

二、文件对话框 


    文件对话框(单文件)

        1、包含头文件 #include< QFileDialog>

void Widget::on_FileButton_clicked()
{
    QString fileName = QFileDialog::getOpenFileName(this,
                                                    tr("文件对话框!"),
                                                    "F:",
                                                    tr("图片文件(*png *jpg);;"
                                                       "本本文件(*txt)"));
    qDebug()<<"filename : "<<fileName;
}

 1. 使用 QFileDialog 类中的 getOpenFileName() 函数来获取选择的文件名,这个函数会以模态方式运行一个文件对话框。
        2. 这个函数返回选择文件的文件名。
        3. 它的四个参数的作用分别是:指定父窗口、设置对话框标题、指定默认打开的目录路径和设置文件类型的过滤器。
        4. 如果不指定文件过滤器,则默认选择所有类型的文件。
        5. 注意:代码中 *png 和 *jpg 之间需要一个空格。
        6. 可以设置不同类型的过滤器,不同类型间用两个分号 “;;”隔开。
这里写图片描述

 

    文件对话框(多文件)

void Widget::on_FileButton_clicked()
{
    QStringList fileNames = QFileDialog::getOpenFileNames(this,
                                                    tr("文件对话框!"),
                                                    "F:",
                                                    tr("图片文件(*png *jpg);;"
                                                       "本本文件(*txt)"));
    qDebug()<<"filenames : "<<fileNames;
}

1. 使用 getOpenFileNames() 函数。
        2. 多个文件名存放在 QStringList 类型变量中。
        3. 除了使用这些静态函数,还可以建立对话框对象来操作。
        4. QFileDialog 类还提供了 getSaveFileName() 函数来实现保存文件对话框和文件另存为对话框。
         5. QFileDialog 类还提供 getExistingDirectory() 函数来获取一个已存在的文件夹路径。
这里写图片描述

 

三、实例


创建好一个工程,在cpp文件中添加如下代码即可。 

#include "mainwindow.h"

#include<QMenu>
#include<QMenuBar>
#include<QDebug>
#include<QMessageBox>
#include<QFileDialog>


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    resize(800, 600);
    QMenuBar *mBar = menuBar();
    setMenuBar(mBar);
    QMenu *menu = mBar->addMenu("对话框");


    QAction *p3 = menu->addAction("关于对话框");
       connect(p3, &QAction::triggered,
               [=]()
               {
                  QMessageBox::about(this, "about", "关于qt");
               }

               );

       QAction *p4 = menu->addAction("问题对话框");
       connect(p4, &QAction::triggered,
               [=]()
               {
                  int ret = QMessageBox::question(this,
                              "question", "Are you ok?",
                                 QMessageBox::Ok |
                                   QMessageBox::Cancel

                                                  );
                   switch(ret)
                   {
                   case QMessageBox::Ok:
                       qDebug() << "i am ok";
                       break;
                   case QMessageBox::Cancel:
                       qDebug() << "i am bad";
                       break;
                   default:
                       break;
                   }
               }

               );


       QAction *p5 = menu->addAction("文件对话框");
       connect(p5, &QAction::triggered,
               [=]()
               {
                  QString path = QFileDialog::getOpenFileName(
                              this,
                              "open",
                              "../",
                "souce(*.cpp *.h);;Text(*.txt);;all(*.*)"
                              );
                  qDebug() << path;
               }

               );
}

MainWindow::~MainWindow()
{

}

编译运行:

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值