浅谈QT打印功能实现
QT作为一款轻量级的集成开发环境,其设计的目标是使开发人员利用QT这个应用程序框架更加快速及轻易的开发应用程序。要达到此目的,要求QT必须能够跨平台,QT能够在32位及64位的Linux,MAC OS X以及Windows上运行。
现在我们想在项目中加入一项打印功能,即使在不同的操作系统环境下,仍然能有相同的用户体验,在实现中发现QT对打印的支持不是那么友好。我们希望在跨平台的情况下,能打印各种文档,比如用户的简历,发现如果不调用对应操作系统的内核外壳打印函数,这项工作变得异常艰难。我们希望用QT自带的函数库,来实现简单的打印功能,这样就实现了一次编码,多环境使用的目的。
下面我们分别介绍这两种方法。
一、调用内核外壳打印函数
Linux下面相对比较容易,使用lpr –p [printer] [fileName]即可,即如果想把file.cpp文件送到打印机pl则使用lpr –p pl file.cpp即可。
Windows下,我们实现打印既定文件路径的文档时,我们调用windows内核命令执行函数,实现打印功能。具体代码如下:
bool printFile(const QString & filePath) |
二、使用QT自定义的类和函数实现打印文件的功能
| className | function |
| QAbstractPrintDialog | base implementation for print dialogs used to configure printers |
| QPageSetupDialog | configuration dialog for the page-related options on a printer |
| QPrintDialog | Dialog for specifying the printer's configuration |
| QPrintEngine | Defines an interface for how QPrinter interacts with a given printing subsystem |
| QPrintPreviewDialog | Dialog for previewing and configuring page layouts for printer output |
| QPrintPreviewWidget | Widget for previewing page layouts for printer output |
| QPrinter | Paint device that paints on a printer |
| QPrinterInfo | Gives access to information about existing printers |
QT中和打印文件相关的类如下所示,它们分别是:
- 抽象文档打印对话框类,提供配置打印机的打印对话框基本实现;
- 页面设置对话框类,和打印页面相关参数的配置对话框;
- 打印对话框类,指定打印机配置的对话框;
- 打印引擎类,定义了QPrinter类如何与打印子系统交互的接口;
- 打印预览对话框类,用来预览和配置页面布局的对话框;
- 打印预览控件类,预览页面布局的控件;
- 打印机类,指示打印机如何工作。
QT中实现打印的方法
在QT中如果想实现打印,首先,我们需要构造一个打印机类(QPrinter)对象, 其次,使用此对象构造一个打印对话框类(QprinterDialog)对象。如下所示:
QPrinter printer; |
最后附上在项目中,我们如何利用QT自身类,来实现这个跨平台的打印功能。
首先,在头文件中指定槽函数:
private slots: |
以上,仅为摸索QT的一点心得,供大家共同交流实践,不足之处欢迎大家指出。
http://express.ruanko.com/ruanko-express_75/tech-overnight1.html
http://blog.csdn.net/jdh99/article/details/42585987
浅谈QT打印功能实现的更多相关文章
- 浅谈 Qt 布局那些事
Qt 布局那些事是本文介绍的内容,直接进入主题.GridLayout是一个非常强大的布局管理器,它可以实现很多复杂的布局,名字中暗示它将所有控件放置在类似网格的布局中.^__^GridLayout有两 ...
- 浅谈Qt事件的路由机制:鼠标事件
请注意,本文是探讨文章而不是教程,是根据实验和分析得出的结果,可能是错的,因此欢迎别人来探讨和纠正. 这几天对于Qt的事件较为好奇,平时并不怎么常用,一般都是用信号,对于事件的处理,一般都是需要响应键 ...
- 浅谈qt 布局器
在一个颜值当道的今天,无论买衣服,买车还是追星,颜值的高低已经变成了大家最看重的(不管男性女性都一样,千万别和我说你不是):而对于程序猿来说,开发一款软件,不再只注重逻辑和稳定性,美观和用户友好性也是 ...
- 我的QT5学习之路(一)——浅谈QT的安装和配置
一.前言 说到Qt,不能不说到C++,这门伟大的语言.因为其面向对象的编程思想和陡峭的学习曲线,一开始学习起来很是吃力.Qt从QT4开始基本封装了很多C++的工具库和界面库,而且支持跨平台,这是它最大 ...
- 浅谈Bootstrap自适应功能在Web开发中的应用
随着移动端市场的强势崛起,web的开发也变得愈发复杂,对于个体开发者来说,自己开发的网站,在电脑.手机.Pad等上面都要有正常的显示以及良好的用户体验.如果每次都要自己去调整网页去匹配各个不同的客户端 ...
- 浅谈关于QT中Webkit内核浏览器
关于QT中Webkit内核浏览器是本文要介绍的内容,主要是来学习QT中webkit中浏览器的使用.提起WebKit,大家自然而然地想到浏览器.作为浏览器内部的主要构件,WebKit的主要工作是渲染.给 ...
- Qt浅谈之总结(整理)
Qt浅谈之总结(整理) 来源 http://blog.csdn.net/taiyang1987912/article/details/32713781 一.简介 QT的一些知识点总结,方便以后查阅. ...
- 浅谈测试rhel7新功能时的感受及遇到的问题【转载】
半夜起来看世界杯,没啥激情,但是又怕错误意大利和英格兰的比赛,就看了rhel7 相关新功能的介绍. rhel7的下载地址: https://access.redhat.com/site/downloa ...
- Qt浅谈内存泄露(总结)
Qt浅谈内存泄露(总结) 来源 http://blog.csdn.net/taiyang1987912/article/details/29271549 一.简介 Qt内存管理机制:Qt 在内部能够维 ...
随机推荐
- Access restriction: The type Resource is not accessible due to restriction on required library
方法一: 全局属性Project>preferences>java>Compiler>Errors/Warnings>把右侧的[Deprecated and restri ...
- Linux故障-bash-4.1$
#模拟故障:-bash-4.1$ [root@nodchen ~]# su - cisco[cisco@nodchen ~]$ \rm -f .*rm: cannot remove `.': Is a ...
- 使用HTML引用标签来分隔Ticket回复
今天在查看Ticket的时候,发现如何和客户之间有很多个来回,Ticket的Correspondence就会很长很长,虽然我们有自己的Breakline,但是由于客户回复邮件时,添加的用于分隔旧信息和 ...
- kubernetes学习 做持久化存储
本节演示如何为 MySQL 数据库提供持久化存储,步骤: 1.创建 PV 和 PVC 2.部署 MySQL 3.向 MySQL 添加数据 4.模拟节点宕机故障,Kubernetes 将 MySQL 自 ...
- JavaScript中的坑
内容:关于JavaScript中的一些蛋疼的问题以及面试笔试中常见的一些坑爹套路总结 此部分内容持续总结完善中... 1.undefined和null的区别 null: Null类型,代表空值,代表一 ...
- concurrent.futures模块
1.concurrent.futures模块介绍 2.ThreadPoolExecutor线程池使用 3.ProcessPoolExecutor进程池使用 4.其他方法使用 1.concurrent. ...
- selenium+python自动化92-多线程启动多个不同浏览器
前言 如果想用多个浏览器跑同一套测试代码,driver=webdriver.Firefox()这里的driver就不能写死了,可以把浏览器名称参数化. 后续如果想实现多线程同时启动浏览器执行用例,用前 ...
- 关系型数据库之Mysql
简介 主要知识点包括:能够与mysql建立连接,创建数据库.表,分别从图形界面与脚本界面两个方面讲解 相关的知识点包括:E-R关系模型,数据库的3范式,mysql中数据字段的类型,字段约束 数据库的操 ...
- 使用Larave5.6l提交POST请求出现The page has expired due to inactivity错误
使用Larave5.6l提交POST请求出现The page has expired due to inactivity错误 一般是由于没有添加 csrf造成的 在表单下面的 第一个行 添加如下代码即 ...
- Centos7修改profile错误导致命令行不能用,情况的解救方案,dir命令不能用
Linux修改profile文件改错了,恢复的方法 Linux修改profile文件改错了,恢复的方法在改profile的时候,改出问题了,除了cd以外的命令基本都不能用了,连vi都不能用了,上网查了 ...