码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-05-01 21:50:28      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:

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

技术分享 

 

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

标签:

原文地址:http://www.cnblogs.com/5iedu/p/5451135.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!