qt QPrinter详解

1、概述

QPrinter类是Qt框架中用于打印输出的绘图设备。它表示打印出来的一系列页面,并提供了一组附加功能来管理特定于设备的特性,比如方向和分辨率。QPrinter可以生成PDF文档,也可以将内容发送到打印机进行实际打印。它继承自QPagedPaintDevice和QPaintDevice,可以作为QPainter的绘图设备来使用,QPainter可以按照QPrinter绘制图形、文字和图像等内容。

2、重要方法

QPrinter类提供了多种方法来设置和管理打印任务,以下是一些重要的方法:

  • setOutputFileName(const QString &fileName):设置打印输出的文件名。如果文件名以“.pdf”结尾,则输出为PDF文件。
  • setOutputFormat(OutputFormat format):设置打印输出的格式。可以是本机定义的格式(NativeFormat)或PDF格式(PdfFormat)。
  • setPrinterName(const QString &name):设置要使用的打印机名称。
  • setOrientation(Orientation orientation):设置打印方向,可以是纵向(Portrait)或横向(Landscape)。
  • setPageSize(const QPageSize &pageSize):设置纸张大小。
  • setPageMargins(const QMarginsF &margins, QPageLayout::Unit units = QPageLayout::Millimeter):设置页面边距。
  • setResolution(int dpi):设置打印分辨率,以每英寸点数(dpi)表示。
  • setFullPage(bool fullPage):设置是否以整页模式打印。
  • setCopyCount(int count):设置要打印的份数。
  • newPage():通知打印机弹出当前页面,并继续在新页面上打印。
  • printerState():返回打印机的当前状态。
3、重要信号

QPrinter类本身并不直接提供信号,但通常与QPrinter一起使用的类(如QPrintDialog、QPrintPreviewDialog等)会发出信号。这些信号可能包括打印开始、打印结束、打印取消等。此外,开发者可以通过连接QPrinter的槽函数来响应特定的打印事件。

4、常用枚举类型

QPrinter类定义了多个枚举类型,用于指定打印的各种参数和选项:

  • ColorMode:指示是否应进行彩色打印。包括Color(如果可用,则以彩色打印,否则以灰度打印)和GrayScale(以灰度打印)两种模式。
  • DuplexMode:指示是在每张纸的单面还是双面打印。包括DuplexNone(仅单面打印)、DuplexAuto(使用打印机的默认设置)、DuplexLongSide(每张纸的两面都用于打印,在打印第二面之前将纸张翻转其最长边)和DuplexShortSide(每张纸的两面都用于打印,在打印第二面之前将纸张翻转其最短边)四种模式。
  • OutputFormat:描述打印时QPrinter应使用的格式。包括NativeFormat(将使用运行平台定义的方法打印输出)和PdfFormat(将其输出生成为PDF文件)两种格式。
  • PageOrder:指示应用程序如何打印。包括FirstPageFirst(应首先打印最低编号的页面)和LastPageFirst(应首先打印最高编号的页面)两种顺序。
  • PaperSource:指定要使用的纸张来源。QPrinter不检查纸张来源是否可用,它只是使用这些信息来尝试设置纸张来源。是否设置纸张来源取决于打印机是否具有该特定来源。此枚举类型在Windows上实现。
  • PrintRange:用于指定打印范围选项。
#include <QApplication>
#include <QPrinter>
#include <QPainter>
#include <QPrintDialog>
#include <QTextDocument>int main(int argc, char *argv[])
{QApplication app(argc, argv);// Create a printerQPrinter printer;// Create a print dialogQPrintDialog printDialog(&printer);if (printDialog.exec() == QDialog::Accepted) {// Create a text document with some contentQTextDocument document;document.setHtml("<h1>QPrinter Demo</h1>""<p>This is a simple demonstration of QPrinter.</p>""<p>It shows how to:</p>""<ul>""<li>Create a printer object</li>""<li>Show a print dialog</li>""<li>Print a text document</li>""</ul>");// Print the documentdocument.print(&printer);}return app.exec();
}

觉得有帮助的话,打赏一下呗。。

           

需要商务合作(定制程序)的欢迎私信!! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/63109.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FPGA实战篇(按键控制LDE实验)

1.按键简介 按键开关是一种电子开关&#xff0c;属于电子元器件类。我们的开发板上有两种按键开关&#xff1a;第一种是本实验所使用的轻触式按键开关&#xff0c;简称轻触开关。使用时以向开关的操作方向施加压力使内部电路闭合接通&#xff0c;当撤销压力时开关断开&#xff…

2023年华数杯数学建模B题不透明制品最优配色方案设计解题全过程文档及程序

2023年华数杯全国大学生数学建模 B题 不透明制品最优配色方案设计 原题再现&#xff1a; 日常生活中五彩缤纷的不透明有色制品是由着色剂染色而成。因此&#xff0c;不透明制品的配色对其外观美观度和市场竞争力起着重要作用。然而&#xff0c;传统的人工配色存在一定的局限性…

大数据:新型生产要素与数字经济发展的强劲引擎

大数据&#xff1a;新型生产要素与数字经济发展的强劲引擎 随着信息技术的飞速发展&#xff0c;大数据已经成为一种全新的生产要素&#xff0c;与土地、劳动力、资本和技术并驾齐驱&#xff0c;共同推动数字经济的发展。这一变革不仅重塑了经济格局&#xff0c;更为诸如十堰市…

PortSwigger 原型污染

一、什么是原型污染 原型污染是一种 JavaScript 漏洞&#xff0c;它使攻击者能够向全局对象原型添加任意属性&#xff0c;然后这些属性可能被用户定义的对象继承。 二、JavaScript 原型和继承基础 1、原型 JavaScript 中的每个对象都链接到某种类型的另一个对象&#xff0c;称…

【实战攻略】如何从零开始快速实现深度学习新想法?——四步走战略

标题 【实战攻略】如何从零开始快速实现深度学习新想法&#xff1f;——四步走战略 【核心结论】 通过四步走战略&#xff0c;即找到baseline论文、深入baseline代码、搭建自己的pipeline、融入核心算法&#xff0c;新手也能快速实现深度学习新想法。 【通俗解释&#xff0…

Qml之基本控件

一.Qml常用控件 1.Text(显示普通文本和富文本) 1.1显示普通文本&#xff1a; Window { visible: true width: 320 height: 240 title: qsTr("Hello World") Text { text: "Hello World!" font.family: "Helvetica" font.pointSize: 24 color:…

威联通-004 安装photoview相册应用Docker镜像

文章目录 前言准备MariaDB 10phpMyAdminphotoview 安装步骤1.安装MariaDB 10和phpMyAdmin2.初始安装MariaDB 103.进入phpMyAdmin添加账户4.手动下载photoview的Docker库注意&#xff1a;安装 phpMyAdmin 报错5.配置photoview6.容器安装成功之后进入photoview注意&#xff1a;这…

ScratchLLMStepByStep:一步一步构建大语言模型教程

前言 在学习大语言模型的时候&#xff0c;总会遇到各种各样的名词&#xff0c;像自注意力、多头、因果、自回归、掩码、残差连接、归一化等等。这些名词会让学习者听的云里雾里&#xff0c;觉得门槛太高而放弃。 本教程将会带你从零开始&#xff0c;一步一步的去构建每一个组…

6.824/6.5840 Lab 1: MapReduce

宁静的夏天 天空中繁星点点 心里头有些思念 思念着你的脸 ——宁夏 完整代码见&#xff1a; https://github.com/SnowLegend-star/6.824 由于这个lab整体难度实在不小&#xff0c;故考虑再三还是决定留下代码仅供参考 6.824的强度早有耳闻&#xff0c;我终于也是到了挑战这座高…

学习threejs,使用CubeCamera相机创建反光效果

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️CubeCamera 立方体相机 二、…

支持向量机(SVM)的解析与应用:从封闭解到时代演变 (中英双语)

中文版 支持向量机&#xff08;SVM&#xff09;的解析与应用&#xff1a;从封闭解到时代演变 什么是支持向量机&#xff08;SVM&#xff09;&#xff1f; 支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是一种经典的监督学习算法&#xff0c;用于解决分类和…

HTML5系列(5)-- SVG 集成详解

前端技术探索系列&#xff1a;HTML5 SVG 集成详解 &#x1f3a8; 开篇寄语 &#x1f44b; 前端开发者们&#xff0c; 在前五篇文章中&#xff0c;我们探讨了 HTML5 的多个特性。今天&#xff0c;让我们深入了解 SVG 的魅力&#xff0c;看看如何创建可缩放的矢量图形。 一、…

变点问题的公式推导

背景与关键定义 变点检测问题 变点检测的目标是在给定的观测序列 y 1 , y 2 , … , y T y_1, y_2, \dots, y_T y1​,y2​,…,yT​ 中&#xff0c;找到一个或多个点&#xff08;变点&#xff09;&#xff0c;使得每段子序列&#xff08;即变点划分的区间&#xff09;能被一个较…

使用 useMemo 和 React.memo 优化 React 组件渲染

在 React 中&#xff0c;性能优化是一个重要的主题&#xff0c;特别是在复杂的组件树中。本文将演示如何在同一个父组件中使用 useMemo 和 React.memo 来优化子组件的渲染。 1. 组件结构 创建一个父组件&#xff0c;包含两个子组件&#xff1a; MemoChild&#xff1a;使用 R…

解决github网络慢的问题

前言 本文采用替换host的方式来加速github的git请求&#xff0c;主要我自己用来备份的懒人方式&#xff0c;不然每次都要手动修改hosts文件&#xff0c;skrskrskr… 一、获取到可用的ip 先到这个网站查询到低延迟的ip 站长工具&#xff1a;https://ping.chinaz.com/ 第2步&…

vue3【实战】多页签【组件封装】PageTabs (含右键快捷菜单组件封装 Contextmenu -- 关闭其他页签,关闭所有页签)

效果预览 技术方案 vue3 ( vite | TS | vueUse | AutoImport | pinia) Element Plus UnoCSS 技术要点 需开启 pinia 持久化右键菜单组件借助了 Element Plus 的样式 代码实现 src/components/PageTabs.vue <script setup lang"ts"> import { usePageTabsSto…

Scala的正则表达式

package hfdobject Test35_3 {def main(args: Array[String]): Unit {println("a\tb")//定义一个规则 正则表达式//1. .表示除了换行之外的其他的任意单个字符//2. \d等于[0-9] 匹配一个数字//3. \D除了\d之外的其他的任意字符&#xff0c;表示非数字//4. \w等价于[…

java的几种排序算法(详细)

冒泡排序&#xff08;Bubble Sort&#xff09; 基本原理&#xff1a; 冒泡排序是一种简单的比较排序算法。它重复地走访要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换&#xff0c;也…

vue项目env文件的使用(vue cli2和vue cli3)

Vue CLI 2 环境 在 Vue CLI 2 中&#xff0c;需要安装 dotenv 包来加载和使用环境变量。 步骤&#xff1a; 安装 dotenv&#xff1a;首先安装 dotenv 包 npm install dotenv --save创建 .env 文件&#xff1a;在项目的根目录下创建一个 .env 文件&#xff0c;并在其中定义你的…

全面解析 Transformer:改变深度学习格局的神经网络架构

目录 一、什么是 Transformer&#xff1f; 二、Transformer 的结构解析 1. 编码器&#xff08;Encoder&#xff09; 2. 解码器&#xff08;Decoder&#xff09; 3. Transformer 模型结构图 三、核心技术&#xff1a;注意力机制与多头注意力 1. 注意力机制 2. 多头注意力&…