1. 字体对话框:QFontDialog
(1)Qt中提供了预定义的字体对话框类(QFontDialog)
(2)QColorDialog类用于提供选择字体的对话框部件
(3)字体对话框的使用方式(见后面的实例分析)
(4)QFontDialog中的实用函数: QFontDialog::getFont
2. 进度对话框:QProgressDialog
(1)Qt中提供了预定义的进度对话框类(QProgressDialog)
(2)QProgressDialog类用于显示进度信息
(3)QProgressDialog类用于需要用户等待的场合
(4)进度对话框的使用方式(见后面的实例分析)
3. 打印对话框:QPrintDialog
(1)QPrintfDialog类
①Qt中提供了预定义的打印对话框类(QPrintDialog)
②QPrintDialog类用于设置打印相关的参数信息
③打印对话框的使用方式(见后面的实例分析)
(2)QPrinter类
①Qt中的QPrinter类是打印设备及其参数的封装
②QPrinter类封装了系统中打印设备的驱动接口
③QPrinter以相同方式使用系统中的不同打印设备
【编程实验】字体对话框、进度对话框及打印对话框的使用实例
//main.cpp
#include <QApplication> #include "Widget.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; w.show(); return a.exec(); }
//Widget.h
#ifndef _WIDGET_H_ #define _WIDGET_H_ #include <QWidget> #include <QPushButton> class Widget : public QWidget { Q_OBJECT private: QPushButton FontDialogBtn; QPushButton ProgressDialogBtn; QPushButton PrintDialogBtn; private slots: void FontDialogBtn_Clicked(); void ProgressDialogBtn_Clicked(); void PrintDialogBtn_Clicked(); public: Widget(QWidget* parent = 0); ~Widget(); }; #endif //_WIDGET_H_
//Widget.cpp
#include "Widget.h" #include <QFontDialog> #include <QPrintDialog> //.pro中须增加:QT += printsupport #include <QPrinter> #include <QTextDocument> #include <QProgressDialog> #include <QDebug> Widget::Widget(QWidget* parent):QWidget(parent), FontDialogBtn(this),ProgressDialogBtn(this),PrintDialogBtn(this) { FontDialogBtn.setText("Font Dialog"); FontDialogBtn.move(20, 20); FontDialogBtn.resize(160, 30); ProgressDialogBtn.setText("Progress Dialog"); ProgressDialogBtn.move(20, 70); ProgressDialogBtn.resize(160, 30); PrintDialogBtn.setText("Print Dialog"); PrintDialogBtn.move(20, 120); PrintDialogBtn.resize(160, 30); resize(200, 170); setFixedSize(200, 170); connect(&FontDialogBtn, SIGNAL(clicked()), this, SLOT(FontDialogBtn_Clicked())); connect(&ProgressDialogBtn, SIGNAL(clicked()), this, SLOT(ProgressDialogBtn_Clicked())); connect(&PrintDialogBtn, SIGNAL(clicked()), this, SLOT(PrintDialogBtn_Clicked())); } void Widget::FontDialogBtn_Clicked() { QFontDialog dlg(this); dlg.setWindowTitle("Color Editor"); dlg.setCurrentFont(QFont("Courier New", 10, QFont::Bold)); if(dlg.exec() == QFontDialog::Accepted) { qDebug() << dlg.selectedFont(); } } void Widget::ProgressDialogBtn_Clicked() { QProgressDialog dlg(this); dlg.setWindowTitle("Updating..."); dlg.setLabelText("DownLoading update from server..."); dlg.setMinimum(0); dlg.setMaximum(100); dlg.setValue(35); //创建线程来更新进条 dlg.exec(); } void Widget::PrintDialogBtn_Clicked() { QPrintDialog dlg(this); dlg.setWindowTitle("Print Dialog Test"); if(dlg.exec()) { QPrinter* p = dlg.printer(); QTextDocument td; //td.setPlainText("Printer Object test!"); td.setHtml("<h1>Print html object test</h1>"); p->setOutputFileName("D:\\test.pdf"); td.print(p); } } Widget::~Widget() { }
4. 小结:Qt中标准对话框的设计模式
(1)GUI界面部件产生数据对象
(2)业务逻辑中的其它对象使用数据对象
(3)GUI界面与业务逻辑通过数据对象连接
原文:http://www.cnblogs.com/5iedu/p/5451135.html