第21课 QT中的标准对话框(下)

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界面业务逻辑通过数据对象连接
                    
                    




































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值