0020:Qt常用类 - 常用的Qt自带Dialog

1 开发环境

在介绍内容之前,先说明一下开发环境,如下图:
0020:Qt常用类 - 常用的Qt自带Dialog0020:Qt常用类 - 常用的Qt自带Dialog
Qt版本:Qt5.3.2;
Qt开发工具:Qt Creater 3.2.1;
Qt构建工具:Desktop Qt 5.3 MinGW 32bit;
Qt开发平台:Windows 7 64bit。

2 自带的Dialog

2.1 创建学习工程

首先,建立一个Qt Widgets Application类型的学习工程,建立步骤如下:

1). 在文件菜单中选择“新建文件或项目”;
2). 如下图,左侧选择“项目”下的“应用程序”,之后从右侧选择“Qt Widgets Application”,点击按钮"choose";
0020:Qt常用类 - 常用的Qt自带Dialog
3). 如下图,名称填写“Widget”,创建路径自己定义,点击按钮“下一步”。
0020:Qt常用类 - 常用的Qt自带Dialog
4). 如下图,勾选“Desktop Qt 5.3 MinGw 32bit”,点击按钮“下一步”。
0020:Qt常用类 - 常用的Qt自带Dialog
5). 基类选择“QWidget”,点击按钮“下一步”。
0020:Qt常用类 - 常用的Qt自带Dialog
6). 点击“完成”按钮,到此工程建立完毕,可以开始写代码了。
0020:Qt常用类 - 常用的Qt自带Dialog

2.2 编写代码

2.2.1 widget.ui

依次拖拽7个push button组件到Widget中,双击按钮编辑按钮文字,最后完成如下图。
0020:Qt常用类 - 常用的Qt自带Dialog
7个按钮的变量名和对应的槽函数如下:
1). 问题信息:pushButton; void on_pushButton_clicked();
2). 问题信息:pushButton2; void on_pushButton_2_clicked();
3). 问题信息:pushButton3; void on_pushButton_3_clicked();
4). 问题信息:pushButton4; void on_pushButton_4_clicked();
5). 问题信息:pushButton5; void on_pushButton_5_clicked();
6). 问题信息:pushButton6; void on_pushButton_6_clicked();
7). 问题信息:pushButton7; void on_pushButton_7_clicked();

2.2.2 widget.h

代码如下。

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui
{
    class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private slots:
    void                on_pushButton_clicked();
    void                on_pushButton_2_clicked();
    void                on_pushButton_3_clicked();
    void                on_pushButton_4_clicked();
    void                on_pushButton_5_clicked();
    void                on_pushButton_6_clicked();
    void                on_pushButton_7_clicked();

private:
    Ui::Widget *        ui;
};

#endif // WIDGET_H

2.2.3 widget.cpp

代码如下。

#include "Widget.h"
#include "ui_Widget.h"

#include <QMessageBox>
#include <QProgressDialog>
#include <QErrorMessage>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_pushButton_clicked()
{
    //
    //  question
    //
    int ret = QMessageBox::question(this, "问题 - 标题", "问题 - 内容", "是", "否", "忽略", 0, 2);
    qDebug("QMessageBox::question - ret = %d", ret);
}

void Widget::on_pushButton_2_clicked()
{
    //
    // infomation
    //
    int ret = QMessageBox::information(this, "提示 - 标题", "提示 - 内容", "是", "否", "忽略", 0, 2);
    qDebug("QMessageBox::information - ret = %d", ret);
}

void Widget::on_pushButton_3_clicked()
{
    //
    //  warning
    //
    int ret = QMessageBox::warning(this, "警告 - 标题", "警告 - 内容", "是", "否", "忽略", 0, 2);
    qDebug("QMessageBox::warning - ret = %d", ret);
}

void Widget::on_pushButton_4_clicked()
{
    //
    //  critical
    //
    int ret = QMessageBox::critical(this, "错误 - 标题", "错误 - 内容", "是", "否", "忽略", 0, 2);
    qDebug("QMessageBox::critical - ret = %d", ret);
}

void Widget::on_pushButton_5_clicked()
{
    //
    //  about
    //
    QMessageBox::about(this, "关于 - 标题", "关于 - 内容");
    qDebug("QMessageBox::about - ret = none");
}

void Widget::on_pushButton_6_clicked()
{
    QProgressDialog dlg("xxx进度", "取消", 0, 50000, this);
    dlg.setWindowTitle("进度对话框");
    dlg.setModal(true);
    dlg.show();

    int progress = 0;
    for (int i=0; i<=50000; i++)
    {
        dlg.setValue(progress = i);
        QCoreApplication::processEvents();
        if (dlg.wasCanceled()) { break; }
    }
    qDebug("QProgressDialog - progress = %d", progress);
}

void Widget::on_pushButton_7_clicked()
{
    QErrorMessage *pDlg = new QErrorMessage(this);
    pDlg->setWindowTitle("错误 - 标题");
    pDlg->showMessage("错误 - 内容");
}

2.2.4 运行调试

最后,编译、调试即可。