第十九课、Qt中的标准对话框(上)------------------狄泰软件学院

一、标准对话框

1、Qt为开发中提供了一下可复用的对话框类型

2、Qt提供的可复用对话框类型全部继承自QDialog类

3、Qt中的标准对话框遵循相同的使用方式

二、消息对话框

1、消息对话框是程序中最常用的界面元素

2、消息对话框主要用于

(1)、为用户提示重要信息

(2)、强制用户进行操作选择

3、消息对话框是使用方式

4、QMessageBox中的实用函数(里面有多个参数,一个函数直接创建某个类型的对话框)

三、文件对话框

1、文件对话框常用于以下情形

(1)、Open Mode:用于程序需要打开一个外部文件

2、Save Mode:应用程序需要将当前内容存储于用户指定的外部文件中

2、文件对话框的使用方式

3、文件类型过滤器

(1)、在文件对话框可以根据文件后缀定义过滤器

(2)、过滤器定义规则

4、QFileDialog中的实用函数

 

#ifndef WIDGET_H
#define WIDGET_H

#include <QtGui/QWidget>
#include <QPushButton>

class Widget : public QWidget
{
    Q_OBJECT
private:
    QPushButton SimpleMsgBtn;
    QPushButton CustomMsgBtn;
    QPushButton OpenFileBtn;
    QPushButton SaveFileBtn;
private slots:
    void SimpleMsgBtn_Clicked();
    void CustomMsgBtn_Clicked();
    void OpenFileBtn_Clicked();
    void SaveFileBtn_Clicked();
public:
    Widget(QWidget *parent = 0);
    ~Widget();
};

#endif // WIDGET_H
Widget.h
#include "Widget.h"
#include <QMessageBox>
#include <QFileDialog>
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent), SimpleMsgBtn(this), CustomMsgBtn(this), OpenFileBtn(this), SaveFileBtn(this)
{   
    SimpleMsgBtn.setText("Simple MessageBox");
    SimpleMsgBtn.move(20, 20);
    SimpleMsgBtn.resize(160, 30);

    CustomMsgBtn.setText("Custom MessageBox");
    CustomMsgBtn.move(20, 70);
    CustomMsgBtn.resize(160, 30);

    OpenFileBtn.setText("OpenFile Dialog");
    OpenFileBtn.move(20, 120);
    OpenFileBtn.resize(160, 30);

    SaveFileBtn.setText("SaveFile Dialog");
    SaveFileBtn.move(20, 170);
    SaveFileBtn.resize(160, 30);

    resize(200, 200);
    setFixedSize(200, 220);

    connect(&SimpleMsgBtn, SIGNAL(clicked()), this, SLOT(SimpleMsgBtn_Clicked()));
    connect(&CustomMsgBtn, SIGNAL(clicked()), this, SLOT(CustomMsgBtn_Clicked()));
    connect(&OpenFileBtn,  SIGNAL(clicked()), this, SLOT(OpenFileBtn_Clicked()));
    connect(&SaveFileBtn,  SIGNAL(clicked()), this, SLOT(SaveFileBtn_Clicked()));
}
void Widget::SimpleMsgBtn_Clicked()
{
    QMessageBox msg(this);//1.定义

    msg.setText("SimpleMsgBtn");//2.设置

    msg.exec();//3.显示
}
void Widget::CustomMsgBtn_Clicked()
{

    QMessageBox msg(this);//1.定义

    msg.setWindowTitle("CustomMsgBtn");//2.设置
    msg.setText("This a detail MessageBox");
    msg.setIcon(QMessageBox::Information);
    msg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel | QMessageBox::Close);

    //下面一句相当于前面五句
    //int ret =  QMessageBox::information(this, "CustomMsgBtn" ,"This a detail MessageBox", QMessageBox::Ok | QMessageBox::Cancel | QMessageBox::Close);

    if(msg.exec() == QMessageBox::Ok)//3.显示
    {
        qDebug() << "Ok is clicked";
    }

}
void Widget::OpenFileBtn_Clicked()
{
    QFileDialog dlg(this);//1.定义

    dlg.setAcceptMode(QFileDialog::AcceptOpen);//2.设置
    dlg.setNameFilter("Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml);;All(*.*)");//过滤器
    dlg.setFileMode(QFileDialog::ExistingFiles);//注意ExistingFiles加s表示可以打开多个文件

    if(dlg.exec()==QFileDialog::Accepted)//3.显示
    {
        QStringList list = dlg.selectedFiles();
        for(int i=0; i<list.count(); i++)
        {
            qDebug() << list[i];
        }
    }

}
void Widget::SaveFileBtn_Clicked()
{
    QFileDialog dlg(this);//1.定义

    dlg.setAcceptMode(QFileDialog::AcceptSave);//2.设置
    dlg.setNameFilter("Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml);;All(*.*)");//过滤器
    dlg.setFileMode(QFileDialog::ExistingFiles);//注意ExistingFiles加s表示可以打开多个文件

    if(dlg.exec()==QFileDialog::Accepted)//3.显示
    {
        QStringList list = dlg.selectedFiles();
        for(int i=0; i<list.count(); i++)
        {
            qDebug() << list[i];
        }
    }
}
Widget::~Widget()
{
    
}
Widget.cpp
#include <QtGui/QApplication>
#include "Widget.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    
    return a.exec();
}
main.cpp

四、小结

(1)、Qt中提供了多个可复用的对话框类型

A、继承QDialog类型

B、遵循相同的使用方式

(2)、QMessageBox用于提示重要的程序信息

(3)、QFileDialog用于获取系统中的文件路径

原文地址:https://www.cnblogs.com/gui-lin/p/6401652.html