当前位置: 首页 > news >正文

第二十一课、Qt中的标准对话框(下)------------------狄泰软件学院

一、字体对话框

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

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

3、字体对话框的使用方式

4、字体对话框中的实用函数

二、进度对话框

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

2、QProgressDialog类用于显示进度信息

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

4、进度对话框的使用方式

三、打印对话框

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

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

3、打印对话框的使用方式

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

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

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

#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.h
#include "Widget.h"
#include <QFontDialog>
#include <QPrintDialog>
#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);//1.定义

    dlg.setWindowTitle("QFontDialog");//2.设置
    dlg.setCurrentFont(QFont("Courier New", 10, QFont::Bold));//设置初始字体,参数是调用字体设置的构造函数

    if(dlg.exec() == QDialog::Accepted)//3.显示
    {
        qDebug() << dlg.selectedFont();
    }
}

void Widget::ProgressDialogBtn_Clicked()//依旧是三板斧
{
    QProgressDialog dlg(this);

    dlg.setWindowTitle("QProgressDialog");
    dlg.setLabelText("Dowload...");
    dlg.setMinimum(0);
    dlg.setMaximum(100);

    dlg.setValue(30);//设置当前进度框的位置
    //实际应用时,会开一个线程来进行下载东西,然后久不久调用setValue()函数一次

    dlg.exec();//没有if语句的原因是进度条对话框一般就是让人等待的

}

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

    dlg.setWindowTitle("QPrintDialog");

    if(dlg.exec() == QPrintDialog::Accepted)
    {
        QPrinter* p = dlg.printer();//将参数设置进打印机
        QTextDocument tb;
        tb.setPlainText("Hello Qt");

        p->setOutputFileName("D:\\Hello.pdf");

        tb.print(p);
    }
}

Widget::~Widget()
{

}
Widget.cpp
#include <QtGui/QApplication>
#include "Widget.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    
    return a.exec();
}
main.cpp

四、小结

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

(1)、GUI界面产生数据对象

(2)、业务逻辑中其它对象使用数据对象

(3)、GUI界面业务逻辑通过数据对象连接

 

转载于:https://www.cnblogs.com/gui-lin/p/6403362.html

相关文章:

  • 六种微服务架构的设计模式
  • 记录和保存日常文件的好处_无需整理
  • webpack 与 热编译webpack-dev-server
  • HDU1878 欧拉回路
  • 【整理】微信小程序开发须知
  • Unity Remote 5 使用
  • puppet自动化技术基础分析及实例部署详解
  • DSOframer的简单介绍和资源整理
  • swift开发多线程篇 - 多线程基础
  • 杭电2003——求绝对值
  • 《ArcGIS Runtime SDK for Android开发笔记》——(5)、基于Android Studio构建ArcGIS Android开发环境(离线部署)...
  • linux 性能篇 -- ps的用法
  • Linux命令篇之du命令和read命令
  • Skynet 小试Debug_console...
  • 大数据~说说Hadoop
  • 《Java编程思想》读书笔记-对象导论
  • 【面试系列】之二:关于js原型
  • Cookie 在前端中的实践
  • Go 语言编译器的 //go: 详解
  • Java 内存分配及垃圾回收机制初探
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Java知识点总结(JavaIO-打印流)
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • Promise面试题2实现异步串行执行
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • swift基础之_对象 实例方法 对象方法。
  • TypeScript实现数据结构(一)栈,队列,链表
  • 从PHP迁移至Golang - 基础篇
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 悄悄地说一个bug
  • 如何用vue打造一个移动端音乐播放器
  • 如何在GitHub上创建个人博客
  • 详解NodeJs流之一
  • Linux权限管理(week1_day5)--技术流ken
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • #pragma pack(1)
  • #QT(一种朴素的计算器实现方法)
  • $.ajax()
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)计算机毕业设计ssm电影分享网站
  • (算法设计与分析)第一章算法概述-习题
  • . Flume面试题
  • .NET CF命令行调试器MDbg入门(一)
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET Core跨平台微服务学习资源
  • .NET 表达式计算:Expression Evaluator
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .net2005怎么读string形的xml,不是xml文件。
  • .py文件应该怎样打开?
  • @JSONField或@JsonProperty注解使用
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝