Qt -QPrinter - Pdf [Qt QPrinter 绘制内容 到 PDF文件]

1 准备好打印设备 QPrinter

    QPrinter printer;

    printer.setOutputFormat(QPrinter::PdfFormat);//设置输出格式为pdf

    printer.setPageSize(QPrinter::A4);//设置纸张大小为A4

    printer.setOutputFileName("test.pdf");//设置输出路径

2 将 绘制 链接到 打印设备上 QPainter

    QPainter painter;
    painter.begin(&printer);

    //正常使用painter 绘制文字、pixmap等在printer上
....

    //至此,文件被保存
    painter.end();

3 绘制过程中 绘制文字、绘制line 、绘制pixmap 、绘制QRect

   //文字
   painter.setFont(Nstr->font);
   painter.drawText(Nstr->pos, Nstr->str);

   //line
   QPen pen;
   pen.setWidth(Nlin->pointsize);
   painter.drawLine(Nlin->pos1 , Nlin->pos2);

   //pixmap
   //QRect rect = painter.viewport();
   //int multiple = rect.width()/Npix->pixmap.width();
   //使用scale拉伸,效果并不好,总会影响其他输出,推荐只使用Rect得到大小,让pixmap绘制到Rect内,自动填充。
   //painter.scale(multiple, multiple);
   painter.drawPixmap(Npix->rect, Npix->pixmap);

   pen.setColor(Qt::red);
   brush.setColor(Qt::red);
   brush.setStyle(Qt::SolidPattern);
   painter.setBrush(brush);
   painter.setPen(pen);
   painter.drawRect(Nrec->rect);

注意:

1 drawPixmap 时 使用painter.scale(sx , sy); 拉伸图像适应pdf窗体时,一定要使用之后立刻 scale(1 , 1); 不然文字什么的都会发生拉伸。

2 QBrush 的使用 并不仅仅是setColor() 就可以了,必须还要设置setStyle();

QPen style

时间: 2024-08-27 14:20:14

Qt -QPrinter - Pdf [Qt QPrinter 绘制内容 到 PDF文件]的相关文章

QT自定义opengl的Widget绘制Mat

QT自定义opengl的Widget绘制Mat 宽高 512 修改名字mat 自定义类型 提升为   提升为MatView类   类型已经改变为MatView   新建MatView类cpp文件   添加头文件 修改构造函数(函数实现,调用父类构造函数) 添加宏定义   重载绘制函数 只显示图片使用paintEvent() 若绘制视频相关,需要使用repaint.update相关函数   只要窗口发生变化,都会调用该函数(如:窗口移动了,所以相关业务逻辑,不能放入,只做绘图的业务)   工程文件

QT绘图二:动态绘制一个矩形

本实例还是通过重写QWidget类的虚函数paintEvent来实现矩形的绘制.1.固定矩形的绘制要求(1)要求举行能够随窗口大小动态调整(2)矩形宽度.高度为窗口宽度高度的一半实例效果如下图所示: 2.将上例中矩形变更为动态绘制(1)矩形的四条边逐一绘制完成(2)矩形绘制完成后,在填充中央背景色实例效果如下图所示: 实现思路:<1>以左上角作为起始点(X0,Y0)<2>向右描点达到矩形坐标点(X1,Y0)<3>向下描点到到(X1,Y1)<4>向左描点到达(

Qt on Android: Qt Quick事件处理之鼠标、键盘、定时器

在<Qt on Android: Qt Quick 事件处理之信号与槽>中介绍了 QML 中如何使用内建类型的信号以及如何自定义信号,这次我们来看看如何处理鼠标.键盘.定时器等事件.这些时间在处理时,通常是通过信号来完成的. 广而告之:我正在参加 CSDN 博文大赛,请给我的参赛文章<Qt on Android: Qt Quick 事件处理之信号与槽>投票,谢谢. 鼠标事件处理 桌面开发的话,难免要处理鼠标事件-- 变色矩形示例 看一个简单的处理鼠标事件的例子,先看代码(handl

Qt on Android: Qt Quick 简单教程

上一篇<Qt on Android: Qt Quick 之 Hello World 图文详解>我们已经分别在电脑和 Android 手机上运行了第一个 Qt Quick 示例-- HelloQtQuickApp ,这篇呢,我们就来介绍 Qt Quick 编程的一些基本概念,为创建复杂的 Qt Quick 应用奠定基础. 版权所有 foruok ,如需转载请注明来自博客 http://blog.csdn.net/foruok . 首先看一下<Qt on Android: Qt Quick

Qt on Android: Qt Quick 组件与对象动态创建详解

在<Qt on Android: Qt Quick 事件处理之信号与槽>一文中介绍自定义信号时,举了一个简单的例子,定义了一个颜色选择组件,当用户在组建内点击鼠标时,该组件会发出一个携带颜色值的信号,当时我使用 Connections 对象连接到组件的 colorPicked 信号,改变文本的颜色. 当时用到的 Component . Loader 两个特性,一直没来得及介绍,可能很多人都还在雾里看花呢.这次呢,我们就来仔仔细细地把他们讲清楚. 请给我的参赛文章<Qt on Androi

Qt 5.7 &gt; Qt Applications

本文翻译自Qt官方文档: http://doc.qt.io/qt-5/qmlapplications.html QML 应用 QML是声明式语言,它使得用户界面以及交互行为可以被"描述"出来.这是一种可读性非常高.动态互联其中的构件的语言,并且它允许构件可以非常容易的被重用和界面自定义.使用QtQuick模块,设计者和开发者可以使用QML开发流畅的动画界面,也可以选择将用户界面与后端的C++库连接起来. 什么是QML? QML是用户界面规范与编程语言.它使得开发者和设计者可以开发出高性

Python+Django+SAE系列教程15-----输出非HTML内容(图片/PDF)

一个Django视图函数 必须 接受一个HttpRequest 实例作为它的第一个參数 返回一个HttpResponse 实例 从一个视图返回一个非HTML 内容的关键是在构造一个 HttpResponse类时,须要指定 mimetype參数. 通过改变 MIME 类型.我们能够通知浏览器将要返回的数据是还有一种类型.以下我们以返回一张PNG图片的视图为例. 为了使事情能尽可能的简单.我们仅仅是读入一张存储在磁盘上的图片: 首先放入一个图片到Bidding\images\testPIC.png中

Qt on Android: Qt Quick 事件处理之信号与槽

前面两篇文章< Qt on Android:QML 语言基础>和<Qt on Android: Qt Quick 简单教程>中我们介绍了 QML 语言的基本语法和 Qt Quick 的常见元素,亲们,通过这两篇文章,您应该已经可以完成简单的 Qt Quick 应用了.接下来呢,哈,我们要介绍 Qt Quick 中一个灰常灰常重要的主题:事件处理.这将是比较长长长长的一篇,哦,不还有后续好几篇--废话少说,还是谈正事儿吧兄弟姐妹们. 本文参加 CSDN 博文大赛,请点这里投我一票,谢

【Qt】关于Qt

什么是Qt Qt是一个针对桌面.嵌入式.移动设备的一个跨平台的应用程序开发框架,支持的平台包括Linux.OS X.Windows.VxWorks.QNX.Android.iOS.BlackBerry(黑莓).Sailfish OS(旗鱼操作系统)等. Qt 1991年由Trolltech-奇趣科技(成立于1994年)开发,2008年,Trolltech被Nokia收购,2012年,Qt被Digia收购. Qt是基于C++编写的框架,它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工