一、消息对话框


在实际的程序开发过程中,经常会用到各种各样的消息框来为用户提供一些提示或提醒,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. 可以设置不同类型的过滤器,不同类型间用两个分号 “;;”隔开。

Qt6 Android 通知_文件对话框

 

    文件对话框(多文件)

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() 函数来获取一个已存在的文件夹路径。

Qt6 Android 通知_消息框_02

 

三、实例


创建好一个工程,在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()
{

}

编译运行:

Qt6 Android 通知_#include_03