第21课 - Qt 中的标准对话框(QFontDialog、QProgressDialog和QPrintDialog)

1、字体对话框 

Qt中提供了预定义的字体对话框QFontDialog类 

QFontDialog类用于提供选择字体的对话框部件 

 

字体对话框的使用方式 

 

QFontDialog中的实用函数 

           - QFontDialog: : getFont 

 

2、进度对话框 

Qt中提供了预定义的进度对话框QProgressDialog类 

QProgressDialog类用于显示进度信息 

QProgressDialog类用于需要用户等待的场合

 

进度对话框的使用方式 

 

3、打印对话框 

Qt中提供了预定义的打印对话框QPrintDialog类 

QPrintDialog类用于设置打印相关的参数信息 

 

打印对话框的使用方式 

 

Qt中的QPrinter类是打印设备及其参数的封装 

QPrinter封装了系统中打印设备的驱动接口 

QPrinter以相同方式使用系统中的不同打印设备

 

4、编程实验

字体、进度、打印对话框使用实例    21-1.pro 

Widget.h

#ifndef _WIDGET_H_
#define _WIDGET_H_

#include <QtGui/QWidget>
#include <QPushButton>

class Widget : public QWidget
{
    Q_OBJECT
private:
    QPushButton FontDialogBtn;
    QPushButton ProgressDialogBtn;
    QPushButton PrintDialogBtn;
private slots:
    void FontDialogBtn_Clicked();
    void PrintDialogBtn_Clicked();
    void ProgressDialogBtn_Clicked();
public:
    Widget(QWidget *parent = 0);
    ~Widget();
};

#endif

Widget.cpp

#include "Widget.h"
#include <QDebug>
#include <QPrinter>
#include <QTextDocument>
#include <QPrintDialog>
#include <QProgressDialog>
#include <QFontDialog>

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("Font Dialog Test");
    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);

    // create a new thread  后续课程深入讲解

    dlg.exec();
}

void Widget::PrintDialogBtn_Clicked()
{
    QPrintDialog dlg(this);

    dlg.setWindowTitle("Print Dialog Test");

    if( dlg.exec() == QPrintDialog::Accepted )
    {
        QPrinter* p = dlg.printer();    //Returns the printer that this printer dialog operates on. 
        QTextDocument td;

        //td.setPlainText("Printer object test!"); //被打印对象
        td.setHtml("<h1>Print html object test</hl>");

        p->setOutputFileName("D:\\test.xps");  //使用虚拟打印设备

        td.print(p);//打印到QPrint对象(封装了打印设备和参数)
    }
}

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();
}

 

 

5、小结 

Qt中标准对话框的设计模式

          - GUI界面部件产生数据对象 

        -业务逻辑中的其它对象使用数据对象 

          - GUI界面业务逻辑通过数据对象连接 

 

 

猜你喜欢

转载自blog.csdn.net/qq_39654127/article/details/81414181