• Qt中的标准对话框


    1. Qt为开发者提供了一些可复用的对话框类型,如QMessageBox,QFileDialog,QPrintDialog, QColorDialog, QInputDialog, QProgressDialog等,他们全部继承与QDialog类。

    2. Qt中的对话框遵循相同的使用方式:

        DialogType dlg(this);                  /* 1. 定义对话框对象 */
    
        dlg.setPropertyxxx(value);             /* 2. 设置对话框属性 */
    
        if(dlg.exec() == DialogType::Value)
        {
            Type v = dlg.getDialogValue();     /* 3. 获取对话框数据 */
            ...                                /* 4. 处理对话框数据 */
        } 

    3. 简单实例

    Widget.h:

    #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;
        QPushButton QColorBtn;
        QPushButton InputBtn;
        QPushButton QFontBtn;
        QPushButton QProgressBtn;
        QPushButton QPrintBtn;
    private slots:
        void SmipleMsgBtn_Clicked();
        void CustomMsgBtn_Clicked();
        void OpenFileBtn_Clicked();
        void SaveFileBtn_Clicked();
        void QColorBtn_Clicked();
        void InputBtn_Clicked();
        void QFontBtn_Clicked();
        void QProgressBtn_Clicked();
        void QPrintBtn_Clicked();
    public:
        Widget(QWidget *parent = 0);
        ~Widget();
    };
    
    #endif // WIDGET_H

    Widget.cpp:

    #include <QDebug>
    #include <QMessageBox>
    #include <QFileDialog>
    #include <QColorDialog>
    #include <QInputDialog>
    #include <QFontDialog>
    #include <QProgressDialog>
    #include <QPrintDialog>
    #include <QTextDocument>
    #include "Widget.h"
    
    Widget::Widget(QWidget *parent)
        : QWidget(parent), SimpleMsgBtn(this), CustomMsgBtn(this), OpenFileBtn(this), SaveFileBtn(this),
          QColorBtn(this), InputBtn(this), QFontBtn(this), QProgressBtn(this), QPrintBtn(this)
    {
        SimpleMsgBtn.setText("Simple Message Dialog");
        SimpleMsgBtn.move(20, 20);
        SimpleMsgBtn.resize(160, 20);
    
        CustomMsgBtn.setText("Custom Message Dialog");
        CustomMsgBtn.move(20, 60);
        CustomMsgBtn.resize(160, 20);
    
        OpenFileBtn.setText("Open File Message Dialog");
        OpenFileBtn.move(20, 100);
        OpenFileBtn.resize(160, 20);
    
        SaveFileBtn.setText("Save File Message Dialog");
        SaveFileBtn.move(20, 140);
        SaveFileBtn.resize(160, 20);
    
        QColorBtn.setText("QColor Dialog");
        QColorBtn.move(20, 180);
        QColorBtn.resize(160, 20);
    
        InputBtn.setText("Input Dialog");
        InputBtn.move(20, 220);
        InputBtn.resize(160, 20);
    
        QFontBtn.setText("QFont Dialog");
        QFontBtn.move(20, 260);
        QFontBtn.resize(160, 20);
    
        QProgressBtn.setText("QProgress Dialog");
        QProgressBtn.move(20, 300);
        QProgressBtn.resize(160, 20);
    
        QPrintBtn.setText("QPrint Dialog");
        QPrintBtn.move(20, 340);
        QPrintBtn.resize(160, 20);
    
    
        resize(200, 400);
        setFixedSize(200, 400);
    
        connect(&SimpleMsgBtn, SIGNAL(clicked()), this, SLOT(SmipleMsgBtn_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()));
    
        connect(&QColorBtn, SIGNAL(clicked()), this, SLOT(QColorBtn_Clicked()));
        connect(&InputBtn, SIGNAL(clicked()), this, SLOT(InputBtn_Clicked()));
    
        connect(&QFontBtn, SIGNAL(clicked()), this, SLOT(QFontBtn_Clicked()));
        connect(&QProgressBtn, SIGNAL(clicked()), this, SLOT(QProgressBtn_Clicked()));
        connect(&QPrintBtn, SIGNAL(clicked()), this, SLOT(QPrintBtn_Clicked()));
    }
    
    void Widget::SmipleMsgBtn_Clicked()
    {
        qDebug() << "SmipleMsgBtn_Clicked start";
    
        QMessageBox msg(this);
    
        msg.setText("This is a message dialog");
    
        msg.exec();
    
        qDebug() << "SmipleMsgBtn_Clicked end";
    }
    
    void  Widget::CustomMsgBtn_Clicked()
    {
        qDebug() << "CustomMsgBtn_Clicked start";
    
        QMessageBox msg(this);
    
        msg.setWindowTitle("Window Tile");
        msg.setText("This is a message dialog");
        msg.setIcon(QMessageBox::Information);
        msg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel | QMessageBox::YesToAll);
    
        qDebug() << msg.standardButtons();
        int r = msg.exec();
    
        if(r == QMessageBox::Ok)
        {
             qDebug() << "OK";
        }
    
        qDebug() << "CustomMsgBtn_Clicked end";
    }
    
    void  Widget::OpenFileBtn_Clicked()
    {
        qDebug() << "OpenFileBtn_Clicked start";
    
        QFileDialog dlg(this);
    
        dlg.setAcceptMode(QFileDialog::AcceptOpen);
        dlg.setFilter("Text(*.txt)");
        dlg.setFileMode(QFileDialog::ExistingFiles);
    
        if(dlg.exec() == QFileDialog::Accepted)
        {
            QStringList fs = dlg.selectedFiles();
            qDebug() << fs;
        }
    
        qDebug() << "OpenFileBtn_Clicked end";
    }
    
    void  Widget::SaveFileBtn_Clicked()
    {
        qDebug() << "SaveFileBtn_Clicked start";
    
        QFileDialog dlg(this);
    
        dlg.setAcceptMode(QFileDialog::AcceptSave);
        dlg.setFilter("Text(*.txt)");
    
        if(dlg.exec() == QFileDialog::Accepted)
        {
            QStringList fs = dlg.selectedFiles();
            qDebug() << fs;
        }
    
        qDebug() << "SaveFileBtn_Clicked end";
    }
    
    void Widget::QColorBtn_Clicked()
    {
        qDebug() << "QColorBtn_Clicked start";
    
        QColorDialog dlg(this);
    
        dlg.setWindowTitle("Color Editer");
        dlg.setCurrentColor(QColor(100, 111, 240));
    
        if(dlg.exec() == QColorDialog::Accepted)
        {
            QColor color = dlg.selectedColor();
    
            qDebug() << color;
            qDebug() << color.red();
            qDebug() << color.green();
            qDebug() << color.blue();
            qDebug() << color.hsvHue();
            qDebug() << color.saturation();
            qDebug() << color.value();
        }
    
        qDebug() << "QColorBtn_Clicked end";
    }
    
    void Widget::InputBtn_Clicked()
    {
        qDebug() << "InputBtn_Clicked start";
        QInputDialog dlg(this);
    
        dlg.setWindowTitle("Input...");
        dlg.setLabelText("Please input a string");
        dlg.setInputMode(QInputDialog::TextInput);
    
        if(dlg.exec() == QInputDialog::Accepted)
        {
            qDebug() << dlg.textValue();
        }
    
        qDebug() << "InputBtn_Clicked end";
    }
    
    void Widget::QFontBtn_Clicked()
    {
        qDebug() << "QFontBtn_Clicked start";
        QFontDialog dlg(this);
    
        dlg.setWindowTitle("Font Editor");
        dlg.setCurrentFont(QFont("Arial", 10, QFont::Normal));
    
    
        if(dlg.exec() == QFontDialog::Accepted)
        {
            qDebug() << dlg.selectedFont();
        }
    
        qDebug() << "QFontBtn_Clicked end";
    }
    
    void Widget::QProgressBtn_Clicked()
    {
        qDebug() << "QProgressBtn_Clicked start";
    
        QProgressDialog dlg(this);
    
        dlg.setWindowTitle("Updating...");
        dlg.setLabelText("Donwloading from server...");
        dlg.setMinimum(0);
        dlg.setMaximum(100);
    
        dlg.setValue(50);
    
        //Create a new thread, download and updat value
    
        dlg.exec();
    
        qDebug() << "QProgressBtn_Clicked end";
    }
    
    void Widget::QPrintBtn_Clicked()
    {
        qDebug() << "QPrintBtn_Clicked start";
    
        QPrintDialog dlg(this);
    
        if(dlg.exec() == QPrintDialog::Accepted)
        {
            QPrinter* p = dlg.printer();
    
            QTextDocument td;
    
            td.setPlainText("Print Object Test");
    
            td.print(p);
    
            qDebug() << "QPrintDialog::Accepted";
        }
    
        qDebug() << "QPrintBtn_Clicked end";
    }
    
    
    Widget::~Widget()
    {
        
    }
  • 相关阅读:
    Django之搭建学员管理系统
    数据库查询操作(fetchone,fetchall)
    HTTP 方法:GET与 POST
    初识django框架
    Memcached的批量删除方案总结
    centos5.5 下面 lnmp环境遇到的小问题
    CentOS 5.5 --学习(1)
    HTTP请求方法及响应码详解(http get post head)
    codeigniter注意点
    htaccess 伪静态的规则
  • 原文地址:https://www.cnblogs.com/wulei0630/p/6693409.html
Copyright © 2020-2023  润新知