Qt: 内建对话框(各种对话框都有了,且用到了qobject_cast解析sender的技术)
#include "BuiltinDialog.h"
#include <QtGui/QTextEdit>
#include <QtGui/QPushButton>
#include <QtGui/QFileDialog>
#include <QtGui/QFontDialog>
#include <QtGui/QColorDialog>
#include <QtGui/QPrintDialog>
#include <QtGui/QInputDialog>
#include <QtGui/QErrorMessage>
#include <QtGui/QProgressDialog>
#include <QtGui/QPageSetupDialog>
#include <QtGui/QGridLayout>
#include <QtGui/QPalette>
#include <QtGui/QColor>
#include <QtGui/QPrinter>
#include <QtGui/QApplication>
#include <QtDebug>
BuiltinDialog::BuiltinDialog(QWidget *parent) :
QDialog(parent) {
// Create widgets.
displayTextEdit = new QTextEdit();
showFileDialogButton = new QPushButton(QObject::tr("File Dialog"));
showFontDialogButton = new QPushButton(QObject::tr("Font Dialog"));
showColorDialogButton = new QPushButton(QObject::tr("Color Dialog"));
showPrintDialogButton = new QPushButton(QObject::tr("Print Dialog"));
showInputDialogButton = new QPushButton(QObject::tr("Input Dialog"));
showErrorDialogButton = new QPushButton(QObject::tr("Error Dialog"));
showProgressDialogButton = new QPushButton(QObject::tr("Progress Dialog"));
showPageSetupDialogButton = new QPushButton(
QObject::tr("Page Setup Dialog"));
// Lay out widgets.
QGridLayout *gridLayout = new QGridLayout();
gridLayout->addWidget(showFileDialogButton, 0, 0, 1, 1);
gridLayout->addWidget(showFontDialogButton, 0, 1, 1, 1);
gridLayout->addWidget(showColorDialogButton, 0, 2, 1, 1);
gridLayout->addWidget(showPrintDialogButton, 1, 0, 1, 1);
gridLayout->addWidget(showInputDialogButton, 1, 1, 1, 1);
gridLayout->addWidget(showErrorDialogButton, 1, 2, 1, 1);
gridLayout->addWidget(showProgressDialogButton, 2, 0, 1, 1);
gridLayout->addWidget(showPageSetupDialogButton, 2, 1, 1, 1);
gridLayout->addWidget(displayTextEdit, 3, 0, 3, 3);
setLayout(gridLayout);
// Connect signals and slots.
QObject::connect(showFileDialogButton, SIGNAL(clicked()), this, SLOT(
buttonsClicked()));
QObject::connect(showFontDialogButton, SIGNAL(clicked()), this, SLOT(
buttonsClicked()));
QObject::connect(showColorDialogButton, SIGNAL(clicked()), this, SLOT(
buttonsClicked()));
QObject::connect(showPrintDialogButton, SIGNAL(clicked()), this, SLOT(
buttonsClicked()));
QObject::connect(showInputDialogButton, SIGNAL(clicked()), this, SLOT(
buttonsClicked()));
QObject::connect(showErrorDialogButton, SIGNAL(clicked()), this, SLOT(
buttonsClicked()));
QObject::connect(showProgressDialogButton, SIGNAL(clicked()), this, SLOT(
buttonsClicked()));
QObject::connect(showPageSetupDialogButton, SIGNAL(clicked()), this, SLOT(
buttonsClicked()));
// Initialize.
setWindowTitle(QObject::tr("Builtin Dialogs"));
}
void BuiltinDialog::buttonsClicked() {
QPushButton *button = qobject_cast<QPushButton *> (sender());
if (button == showFileDialogButton) {
QString fileName = QFileDialog::getOpenFileName(this, QObject::tr(
"Open File"), QDir::home().path(), QObject::tr(
"Images(*.png *.jpg *.gif)"));
displayTextEdit->setText(fileName);
} else if (button == showFontDialogButton) {
bool ok;
const QFont &font = QFontDialog::getFont(&ok, displayTextEdit->font(),
this);
if (ok) {
displayTextEdit->setFont(font);
}
} else if (button == showColorDialogButton) {
QPalette palette = displayTextEdit->palette();
const QColor &color = QColorDialog::getColor(palette.color(
QPalette::Base), this);
if (color.isValid()) {
palette.setColor(QPalette::Base, color);
displayTextEdit->setPalette(palette);
}
} else if (button == showPrintDialogButton) {
QPrinter printer;
QPrintDialog dialog(&printer, this);
dialog.setWindowTitle(QObject::tr("Print Dialog"));
if (QDialog::Accepted == dialog.exec()) {
displayTextEdit->setText("Printing file.....");
}
} else if (button == showInputDialogButton) {
bool ok;
QString text = QInputDialog::getText(this, QObject::tr(
"Input User Name"), QObject::tr("User Name: "),
QLineEdit::Normal, QDir::home().dirName(), &ok);
if (ok && !text.isEmpty()) {
displayTextEdit->setText(text);
}
} else if (button == showErrorDialogButton) {
QErrorMessage box(this);
box.setWindowTitle(QObject::tr("Error Message"));
box.showMessage(QObject::tr("There are errors XX."));
box.showMessage(QObject::tr("There are errors XX."));
box.showMessage(QObject::tr("There are errors XX."));
box.showMessage(QObject::tr("There are errors YY."));
box.exec();
} else if (button == showProgressDialogButton) {
int maxValue = 10000;
QProgressDialog dialog(QObject::tr("Copying files..."), QObject::tr(
"Cancel"), 0, maxValue, this);
dialog.setWindowModality(Qt::WindowModal);
dialog.setWindowTitle(QObject::tr("Progress Dialog"));
dialog.show();
for (int i = 0; i < maxValue; ++i) {
dialog.setValue(i);
qApp->processEvents();
if (dialog.wasCanceled()) {
break;
}
qDebug() << i; // #include <QtDebug>
}
dialog.setValue(maxValue);
} else if (button == showPageSetupDialogButton) {
QPrinter printer;
QPageSetupDialog dlg(&printer, this);
dlg.setWindowTitle(QObject::tr("Page Setup"));
if (QDialog::Accepted == dlg.exec()) {
displayTextEdit->setText("Page's properties are setupped.");
}
}
}
http://www.cppblog.com/biao/archive/2009/03/28/78105.html
Qt: 内建对话框(各种对话框都有了,且用到了qobject_cast解析sender的技术)的更多相关文章
- qt学习001之运行对话框
使用QT实现Window下运行对话框 1.摆放控件 首先设置并摆放相应的对话框控件,并更改相应名称: 2.实现功能 1)在文本框中输入信息后,点击确定或回车可以运行系统中相应的程序: 点 ...
- QT+ 使用标准对话框+关于对话框+问题对话框+文件对话框
#include "mainwindow.h" #include <QMenuBar> #include <QMenu> #include <QAct ...
- 18第一章 ASP.Net内建对象
第一章 ASP.Net内建对象 第一章 ASP.Net内建对象 ASP.Net为保持用户的数据和信息,内建了许多对象,包括Application.Response.Requ ...
- Bash shell的内建命令:type
type指令是用来观察指令时来自于外部指令还是内建在bash中的指令. type [-tpa] name 选项与参数: :不加任何选项与参数时,type会显示出name是外部指令还是bash内建指 ...
- javascript 对象初探 (四)--- 内建对象之旅之Array
我们不要去纠结神马是内建对象,神马是內建构造器.到后来你们便会发现其实她们都是对象. Array()是一个构建数组的內建构造器函数: var arr = new Array(); 与下面的是等效的: ...
- MFC编程入门之十六(对话框:消息对话框)
前面几节讲了属性页对话框,我们可以根据所讲内容方便的建立自己的属性页对话框.本节讲解Windows系统中最常用最简单的一类对话框--消息对话框. 我们在使用Windows系统的过程中经常会见到消息对话 ...
- javascript内建对象
内建对象等价于内建构造器内建对象大致分为三类:数据封装类对象--Object.Array.Boolean.Number和String工具类对象--Math.Date.RegExp等用于提供遍历的对象错 ...
- Paip.最佳实践-- Buildin variale 内建变量 ,魔术变量,预定义变量,系统常量,系统变量 1
Paip.最佳实践-- Buildin variale 内建变量 ,魔术变量,预定义变量,系统常量,系统变量 1.1.1 C++内建变量(__LINE__).... 1.1.2 ...
- [pyhton]python内建方法
撸一遍python的内建方法 这样做的好处就是:我如果要完成一个功能的时候,如果能用内建方法完成,就用内建方法.这样可以提高效率,同时使自己的代码更加优雅.哎呦?那岂不是撸完就是python高手了?我 ...
随机推荐
- jbpm3.2中jbpm.jpdl.mysql.sql文件运行报错的问题
这是一个很久之前遇到的问题,就是用从官网下下载的jbpm组件,它的jbpm.jpdl.mysql.sql不能正常运行.其原因是该sql文件中有一句语句有错误.现在附上正确的jbpm.jpdl.mysq ...
- blazeDS集成spring的remote访问
欢迎交流转载,请注明出处:http://www.cnblogs.com/shizhongtao/p/3490037.html 上一篇我只是简单实用blazeds创建了一个实例,大多数开发中,都是结合 ...
- HDU 5491 The Next(位运算)
题意:已知D(0<=D<2^31).s1.s2,其中L为D转化为二进制数时1的个数,题目保证s1<=L<=s2,求一个数,满足以下条件: 1.比D大 2.转化为二进制时1的个数 ...
- Alluxio1.0.1最新版(Tachyon为其前身)介绍,+HDFS分布式环境搭建
Alluxio(之前名为Tachyon)是世界上第一个以内存为中心的虚拟的分布式存储系统.它统一了数据访问的方式,为上层计算框架和底层存储系统构建了桥梁. 应用只需要连接Alluxio即可访问存储在底 ...
- Go 接口转换的一个例子
今天将Go 的websocket集成到已有的http中时也遇到以下一个问题:其中主要是接口类型转换 转载自[http://www.cnblogs.com/ghj1976/archive/2013/04 ...
- 使用DNSSCrypt解决DNS污染问题
本文转自 月光博客,如有需要,请阅读原文. google近期在国内是不能访问了,dropbox这货居然也被DNS污染了,幸好发现DNSCrypt这一神器,防止DNS污染的绝佳工具. 基本原理:DNSC ...
- js function定义函数的4种方法
js function定义函数的4种方法 1.最基本的作为一个本本分分的函数声明使用. 复制代码代码如下: 复制代码代码如下: function func(){} 或 var func=functio ...
- Windows Phone 8.1 列表控件(3):多数据呈现
说到 List 控件,Windows Phone 8.1 上推荐使用的是 ListView 和 GridView. 而这两个控件实在太多东西可讲了,于是分成三篇来讲: (1)基本 (2)分组数据 (3 ...
- httpc服务器错误类型大全
HTTP 400 - 请求无效HTTP 401.1 - 未授权:登录失败HTTP 401.2 - 未授权:服务器配置问题导致登录失败HTTP 401.3 - ACL 禁止访问资源HTTP 401.4 ...
- spring-cloud-bus
安装rabbitmq 依赖erlang: http://erlang.org/download/otp_win64_18.2.exe