• 第十九课、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用于获取系统中的文件路径

  • 相关阅读:
    how to install VLC Player on Fedora 32 Workstation
    Centos 8.2 2004镜像地址
    Fedora 33 Workstation: x86_64 DVD ISO
    [听力/口语]每天十分鐘回音練習
    CSS设置背景色
    设置禁止子标签超出父标签产生了滚动条
    引用自定义的css或者js文件
    js 中使用typeof
    React native 之 Promise
    Mac升级系统后 Pod Install报错-不能用 解决办法
  • 原文地址:https://www.cnblogs.com/gui-lin/p/6401652.html
Copyright © 2020-2023  润新知