1、字体对话框
1.1、QT提供了预定义的字体对话框QFontDialog类
1.2、 QFontDialog类用于提供选择字体的对话框部件
1.3、 字体对话框的使用方式
1.4、 字体对话框中的实用函数
2、进度对话框
2.1 Qt提供了预定义的进度对话框QProgressDialog类
2.2、 QProgressDialog类用于显示进度信息
2.3、 QProgressDialog类用于需要用户等待的场合
2.4、进度对话框的使用方式、
3、打印对话框
3.1 Qt中提供了预定义的打印对话框QPrintDialog类
3.2、 QPrintDialog类用于设置打印相关的参数信息
3.3、打印对话框的使用方式
3.4、 Qt中的QPrinter类是打印设备及其参数的封装
3.5、 QPrinter类封装了系统中打印设备的驱动接口
3.6、 QPrinter类以相同的方式使用系统中不同的打印设备
QPrintDialog.h
#ifndef _WIDGET_H_
#define _WIDGET_H_
#include <QWidget>
#include <QPushButton>
class Widget : public QWidget
{
Q_OBJECT
private:
QPushButton FontDialogBtn;
QPushButton ProgressDialogBtn; //主界面的三个button
QPushButton PrintDialogBtn;
private slots:
void FontDialogBtn_clicked();
void ProgressDialogBtn_clicked();//消息处理函数,槽函数。
void PrintDialogBtn_clicked();
public:
Widget(QWidget *parent = 0);
~Widget();
};
#endif // WIDGET_H
QPrintDialog.cpp
#include "widget.h"
#include <QFontDialog>
#include <QProgressDialog>
#include <QPrintDialog>
#include <QTextDocument>
#include <QPrinter>
#include <QDebug>
void FontDialogBtn_clicked();
void ProgressDialogBtn_clicked();//消息处理函数,槽函数。
void PrintDialogBtn_clicked();
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);
this->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); //1、定义
dlg.setWindowTitle("");//2、设置
dlg.setCurrentFont(QFont("Courier New", 10, QFont::Bold));//设置初始字体,参数是调用字体设置的构造函数(会生成临时对象)。
if(dlg.exec() == dlg.Accepted)//3、显示
{
qDebug() << dlg.selectedFont();
}
}
void Widget::ProgressDialogBtn_clicked()//消息处理函数,槽函数。
{
QProgressDialog dlg(this); // 1、定义
dlg.setWindowTitle("QProgressDialog");
dlg.setLabelText("Dowload..."); //2、设置
dlg.setMinimum(0);
dlg.setMaximum(100);
dlg.setFixedSize(200, 100);
dlg.setValue(30);//设置当前进度框的位置
//实际应用时,会开一个线程来进行下载东西,然后时不时调用setValue()函数一次
dlg.exec(); //3、显示,进度条对话框一般就要让人等待的。
}
void Widget::PrintDialogBtn_clicked()
{
QPrintDialog dlg(this);//1、定义
dlg.setWindowTitle("QPrintDialog");
if(dlg.exec() == QPrintDialog::Accepted)//显示
{
QPrinter* p = dlg.printer();//返回指向打印机操作的指针
QTextDocument tb;
//tb.setPlainText("Hello Qt");//设置文件的内容。
tb.setHtml("<hl>Print Html object test</hl>");
p->setOutputFileName("D:\\hello.pdf");//设置创建文件的路径
tb.print(p);//将文件通过打印机打印出来。
}
}
Widget::~Widget()
{
}
main.cpp
#include <QtGui/QApplication>
#include "widget.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
4、小结
4.1、 Qt中标准对话框的设计模式
4.1.1、 GUI界面产生数据对象
4.1.2、 业务逻辑中其它对象使用数据对象
4.1.3、 GUI界面与业务逻辑通过数据对象连接