0020:Qt常用类 - 常用的Qt自带Dialog
1 开发环境
在介绍内容之前,先说明一下开发环境,如下图:
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";
3). 如下图,名称填写“Widget”,创建路径自己定义,点击按钮“下一步”。
4). 如下图,勾选“Desktop Qt 5.3 MinGw 32bit”,点击按钮“下一步”。
5). 基类选择“QWidget”,点击按钮“下一步”。
6). 点击“完成”按钮,到此工程建立完毕,可以开始写代码了。
2.2 编写代码
2.2.1 widget.ui
依次拖拽7个push button组件到Widget中,双击按钮编辑按钮文字,最后完成如下图。
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 运行调试
最后,编译、调试即可。