课 程 推 荐 我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈 PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)教程合集 👈👈 Oracle数据库教程:👉👉 Oracle数据库教程合集 👈👈 MySQL数据库教程:👉👉 MySQL数据库教程合集 👈👈 优 质 资 源 下 载 :👉👉 资源下载合集 👈👈 优 质 教 程 推 荐:👉👉 Python爬虫从入门到入狱系列 合集 👈👈 .
QtPrintSupport_打印操作
- 前言
- QPaintDevice
- QPagedPaintDevice
- QtPrintSupport
- QAbstractPrintDialog
- QPrintDialog
- QPageSetupDialog
- QPrinter
- QPrintPreviewWidget
- QPrintPreviewDialog
- QPrintEngine
- QPrinterInfo
前言
- 打印图像是图像处理软件中的一个常用功能,打印图像实际上是在
QPaintDevice
中画图,与平时在QWidget
、QPixmap
和QImage
中画图是一样的,都是创建一个QPainter
对象进行画图的 - 只是打印使用的是
QPrinter
,它的本质上也是一个QPaintDevice(绘图设备)
- 打印预览是通过
QtPrintSupport
模块中的QPrintPreviewWidget
或者QPrintPreviewDialog
来实现
QPagedPaintDevice(QPaintDevice) # 支持多个页面的PaintDevice (绘图设备)QtPrintSupport.pyQPrinter(PyQt5.QtGui.QPagedPaintDevice) # 在打印机上作画的装置QPrintPreviewWidget(PyQt5.QtWidgets.QWidget) # 用于预览打印机输出的页面布局的小部件QPrintPreviewDialog(PyQt5.QtWidgets.QDialog) # 用于预览和配置打印机输出的页面布局的对话框QPageSetupDialog(PyQt5.QtWidgets.QDialog) # 配置对话框,用于打印机上与页面相关的选项QAbstractPrintDialog(PyQt5.QtWidgets.QDialog) # 用于配置打印机的打印对话框的基本实现QPrintDialog(QAbstractPrintDialog) # 用于指定打印机配置的对话框QPrintEngine(sip.simplewrapper) # 定义QPrinter与给定打印子系统交互的接口QPrinterInfo(sip.simplewrapper) # 提供对现有打印机信息的访问
QPaintDevice
- 描述
- QPaintDevice类是可以用QPainter绘制的对象的基类
- QPaintDevice的绘图功能目前由QWidget、qmage、QPixmap、QGLPixelBuffer、QPicture和QPrinter子类实现
- 为了实现对新后端的支持,您必须从QPaintDevice派生并重新实现虚拟paintenengine)函数,以告诉QPainter应该使用哪个绘制引擎在这个特定的设备上绘制
- 还必须创建一个相应的绘画引擎,以便能够在设备上绘画,即从qpaintenengine派生并重新实现其虚拟功能
- 继承自:qmage, QOpenGLPaintDevice, QPagedPaintDevice, QPaintDeviceWindow, QPicture, QPixmap, QSvgGenerator, QWidget
- 常用API
QPaintDevice 类提供了几个返回各种设备度量的函数 depth() # 返回其位深度(位平面的数量) height() # 以默认坐标系单位(例如QPixmap和QWidget的像素)返回其高度 heightMM() # 以毫米为单位返回设备的高度 width() # 分别以默认坐标系单位返回设备的宽度 widthMM() # 分别以毫米为单位返回设备的宽度metric() # 通过指定所需的PaintDeviceMetric作为参数来检索度量信息 logicalDpiX() logicalDpiY() # 返回设备的水平和垂直分辨率,单位为每英寸点数 physicalDpiX() physicalDpiY() # 返回设备的分辨率(单位为每英寸点数)# 如果逻辑和物理分辨率不同,相应的qpaintenengine必须处理映射 colorCount() # 函数返回绘制设备可用的不同颜色的数量
QPagedPaintDevice
- 描述
- QPagedPaintDevice 类代表了一个支持多个页面的 PaintDevice (绘图设备)
- 分页绘制设备用于生成打印或PDF等格式的输出
- QPdfWriter 和 QPrinter 继承自它
- 继承自:QPaintDevice
- 常用API
margins() # 返回绘制设备的当前边距。默认值为0,单位是毫米 setMargins(Margins) # 设置要使用的页边距为页边距。 # 边距纯粹是对绘制方法的提示。它们不影响坐标系统或裁剪。 setPageMargins(QMarginsF) → bool # 设置页边距pageLayout() # 返回当前页面布局# 使用这个方法可以访问当前的QPageSize、Orientation、QMarginsF、fullRect()和paintRect()。# 注意:不能在返回的对象上使用setter,您必须调用单独的QPagedPaintDevice.setter或使用setPageLayout() setPageLayout(QPageLayout) → bool # 设置页面布局pageSize() # 返回当前使用的页面大小 pageSizeMM() # 返回以毫米为单位的页面大小setPageSize(PageSize) # 设置页面大小为size。 setPageSizeMM(QSizeF) # 设置页面大小为size,尺寸以毫米为单位指定。# 如果大小与标准PageSize匹配,则使用该页面大小,否则将设置Custom。setPageOrientation(Orientation) → bool # 设置页面方向
QtPrintSupport
- PyQt为打印提供了广泛的跨平台支持。使用每个平台上的打印系统,PyQt应用程序可以打印到连接的打印机上,也可以通过网络打印到远程打印机上。
- PyQt的打印系统还支持PDF文件生成,为基本报表生成工具提供了基础
- 在PyQt中,打印机由QPrinter表示,QPrinter是一个绘图设备,它提供了特定于打印的功能,例如支持多页和双面输出。因此,打印需要使用QPainter在一系
列页面上进行绘制,就像在自定义小部件或图像上进行绘制一样 - 包含类
QtPrintSupport.py QAbstractPrintDialog(PyQt5.QtWidgets.QDialog) # 用于配置打印机的打印对话框的基本实现 QPrintDialog(QAbstractPrintDialog) # 用于指定打印机配置的对话框 QPageSetupDialog(PyQt5.QtWidgets.QDialog) # 配置对话框,用于打印机上与页面相关的选项QPrinter(PyQt5.QtGui.QPagedPaintDevice) # 在打印机上作画的装置QPrintPreviewWidget(PyQt5.QtWidgets.QWidget) # 用于预览打印机输出的页面布局的小部件 QPrintPreviewDialog(PyQt5.QtWidgets.QDialog) # 用于预览和配置打印机输出的页面布局的对话框QPrintEngine(sip.simplewrapper) # 定义QPrinter与给定打印子系统交互的接口 QPrinterInfo(sip.simplewrapper) # 提供对现有打印机信息的访问
QAbstractPrintDialog
- 描述
- QAbstractPrintDialog类提供了一个基实现,用于配置打印机的打印对话框
- 这个类实现了用于自定义打印对话框中显示的设置getter和setter函数,但它不能直接使用。使用QPrintDialog在你的应用程序中显示打印对话框
- 继承自:QDialog
- 常用API
QAbstractPrintDialog(QPrinter, parent: QWidget = None) # 构造函数 exec() → int exec_() → int # 这个虚函数被调用,弹出对话框。它必须重新实现在子类中printer() → QPrinter # 返回此打印机对话框所操作的打印机fromPage() → int # 返回要打印的第一页,默认值为0 toPage() → int # 返回要打印的最后一页,默认值为0maxPage() → int # 返回打印范围中的最大页 minPage() → int # 返回打印范围中的最小页 printRange() → PrintRange # 返回打印范围setPrintRange(PrintRange) # 设置打印对话框中的打印范围 setFromTo(m, n) # 设置打印对话框中的范围从m到n setMinMax(int, int) # 将打印对话框中的页范围设置为从最小到最大# 会启用PrintPageRange选项 setOptionTabs(Iterable[QWidget]) # 如果支持,将小部件列表设置为在打印对话框中显示的选项卡。# 目前这个选项只在X11上受支持。# 设置选项卡将把它们的所有权转移到打印对话框enabledOptions() → PrintDialogOptions setEnabledOptions(Union[PrintDialogOptions, PrintDialogOption])QAbstractPrintDialog.PrintDialogOption # 用于指定打印对话框的部分应该是可见的# QAbstractPrintDialog.None # 没有一个选项被启用。# QAbstractPrintDialog.PrintToFile # 到文件选项打印已启用。# QAbstractPrintDialog.PrintSelection # 打印选择的选项被启用。# QAbstractPrintDialog.PrintPageRange # 页面范围选择的选项被启用。# QAbstractPrintDialog.PrintShowPageSize # 显示页面大小+页边距仅当启用此功能。# QAbstractPrintDialog.PrintCollateCopies # 启用了分页复印选项# QAbstractPrintDialog.PrintCurrentPage # 打印当前页面的选项被启用QAbstractPrintDialog.PrintRange # 用于指定打印范围选择选项# QAbstractPrintDialog.AllPages # 0 所有网页应打印。# QAbstractPrintDialog.Selection # 1 唯一的选择应打印。# QAbstractPrintDialog.PageRange # 2 指定页面范围应打印。# QAbstractPrintDialog.CurrentPage # 3 只有当前可见的页面应该被打印出来
QPrintDialog
-
描述
- QPrintDialog是一个用于显示打印对话框的类
- 该对话框允许用户更改与文档相关的设置,例如纸张大小和方向、打印类型(彩色或灰度)、页面范围和要打印的副本数量
- 还提供了控件,使用户能够从可用的打印机(包括任何已配置的网络打印机)中进行选择
- 通常,OPrintDialog对象是用OPrinter对象构造的,并使用exec()函数执行
-
继承自:QAbstractPrintDialog
-
界面
-
常用API
# 构造函数 QPrintDialog(parent: QWidget = None) # 实例化一个打印对话框对象 QPrintDialog(QPrinter, parent: QWidget = None) # 实例化一个打印对话框对象,并关联给定的打印机对象exec() → int # 显示打印对话框并执行事件循环 exec_() → int# 返回用户点击的按钮:QDialog.Accepted(打印)或QDialog.Rejected(取消) open() # 显示打印对话框并执行事件循环 open(PYQT_SLOT) # 显示打印对话框并执行事件循环# 打开对话框并将其accept()信号连接到由接收器和成员指定的插槽# 当对话框关闭时,信号将从插槽断开printer() # 获取与打印对话框所操作的打印机对象# 这在使用QPrintDialog.open()方法时非常有用 setPrinter(QPrinter *printer) # 设置与打印对话框关联的打印机对象options() # 获取打印对话框的选项 testOption(PrintDialogOption) → bool # 检查打印对话框指定的选项是否被启用 setOption(PrintDialogOption option, bool on = true) # 设置打印对话框的选项,影响对话框外观的各种选项# 如果on为true,则设置给定选项为启用;否则,清除给定的选项 setOptions(Union[PrintDialogOptions, PrintDialogOption])done(int) # 关闭对话框并将其结果代码设置为result# 如果这个对话框是用exec()显示的,done会导致本地事件循环完成,exec()返回结果
-
可用信号
accepted() accepted(QPrinter) # 当用户接受打印对话框中设置的值时,就会发出这个信号。打印机参数包括应用设置的打印机
QPageSetupDialog
-
描述
- QPageSetupDialog类为打印机上与页面相关的选项提供了一个配置对话框
- 在Windows和macoS上,页面设置对话框是使用本机页面设置对话框实现的。
- 请注意,在Windows和macOS上,自定义纸张大小不会反映在本机页面设置对话框中
- 此外,在QPrinter上设置的自定义页边距不会显示在本机macoS页面设置对话框中
-
继承自:QDialog
-
界面
-
常用API
# 构造函数 QPageSetupDialog() # 构造一个页面设置对话框 QPageSetupDialog(QWidget *parent = nullptr) # 构造一个页面设置对话框,并设置父控件 QPageSetupDialog(QPrinter *printer, QWidget *parent = nullptr) # 构造一个页面设置对话框,在配置一个默认构造的QPrinter的同时设置父控件printer() # 获取传递给QPageSetupDialog构造函数的打印机done(int result) exec() # 调用这个虚函数来弹出对话框。它必须在子类中重新实现 open(QObject *receiver, const char *member) # 打开对话框并将其accept()信号连接到由接收器和成员指定的插槽# 当对话框关闭时,信号将从插槽断开
QPrinter
- 描述
- QPrinter类是一个绘图设备,用于在打印机上绘图
- 该设备表示一系列的打印输出页面,其使用方式与其他绘画设备(如:QWidget和QPixmap)几乎完全相同
- 提供了组附加功能来管理特定于设备的特性,例如方向和分辨率,并在生成文档时逐步遍历文档中的页面
- 当直接打印到Windows或macos上的打印机时,OPrinter使用内置的打印机驱动程序
- 在X11上,QPrinter使用通用Unix打印系统(CUPS)将PDF输出发送到打印机。作为一种选择,printProgram(函数可用于指定要使用的命令或实用程序,而不是系统默认值
- 请注意,在无效打印机上设置纸张大小和分辨率等参数是未定义的。你可以用Printer.isValid()在更改任何参数之前验证这一点
- QPrinter支持许多参数,最终用户可以通过打印对话框更改其中的大多数参数。在一般来说,QPrinter将这些函数传递给底层的qprintenengine
- 当QPainter.begin()被调用时,它所操作的QPrinter已经为一个新的页面做好了准备,这使得QPainter可以立即用于绘制文档中的第一页。
- 一旦绘制了第一页,就可以调用newPage(来请求绘制新的空白页,或者调用QPainter.end()来完成打印。
- 在绘制第二页和后面的所有页面之前,使用对newPage()的调用来准备它们
- 文档中的第一页不需要先调用newPage()。只有在需要在打印文档的开头插入空白页时,才需要在QPainter.begin()之后调用newPage()
- 类似地,在绘制文档中的最后一页后调用newPage()将导致在打印文档的末尾追加一个空白页
- 如果要中止打印作业,abort()将尽力停止打印。它可能会取消整个作业或只是部分作业
- 由于QPrinter可以打印到任何QPrintEngine的子类,因此可以通过创建OPrintEngine的子类并重新实现其接口来扩展打印支持,以覆盖新的打印子系统类型
- 继承自:QPagedPaintDevice
- 枚举类型
# 打印颜色 QPrinter.ColorModeQPrinter.Color # 1 如果可用,以彩色打印,否则以灰度打印QPrinter.GrayScale # 0 以灰度打印,即使在彩色打印机上也是如此# 单双面打印 QPrinter.DuplexModeQPrinter.DuplexNone # 0 单面打印QPrinter.DuplexAuto # 1 打印机的默认设置,用于确定是否使用双面打印QPrinter.DuplexLongSide # 2 双面打印,长边翻转QPrinter.DuplexShortSide # 3 双面打印,短边翻转# 打印方向 # 此枚举类型(不要与Orientation混淆)用于指定每个页面的方向 QPrinter.OrientationQPrinter.Portrait # 0 纵向,页面的高度大于宽度QPrinter.Landscape # 1 横向,页面的宽度大于高度# 打印格式 QPrinter.OutputFormatQPrinter.NativeFormat # 0 QPrinter将使用它运行的平台定义的方法打印输出。当直接打印到打印机时,此模式是默认的QPrinter.PdfFormat # 1 QPrinter将生成一个可搜索的PDF文件。当打印到文件时,此模式是默认的# 打印顺序 QPrinter.PageOrderQPrinter.FirstPageFirst # 0 编号最低的那一页优先打印QPrinter.LastPageFirst # 1 编号最高的那一页优先打印# 纸张大小 # QPrinter不检查纸张尺寸是否可用;它只是使用这些信息 # 连同QPrinter.Orientation 和QPrinter.setFullPage(),来确定可打印的区域 QPrinter.PaperSize# 标准Postscript和Windows Executive大小QPageSize.ExecutiveStandard# 标准Postscript和Windows DMPAPER_FOLIO大小QPageSize.FanFoldGermanLegalQPageSize.PageSizeId.A0...QPageSize.PageSizeId.LastPageSize# Letter、Legal、Folio、Executive是纸张尺寸的意思# 应用于加拿大、美国和墨西哥等国家# 各自的尺寸:# Letter 216毫米x279毫米# Legal 216毫米×356毫米# Folio 216毫米×330毫米# Executive 184毫米x267毫米 # 纸张大小还可以使用QPagedPaintDevice枚举QPagedPaintDevice.A0...QPagedPaintDevice.LastPageSize# 纸张来源(仅Windows有效) # 是否会设置纸张来源取决于打印机是否具有该特定来源 QPrinter.PaperSourceQPrinter::Auto...QPrinter.LastPaperSource# 打印范围 QPrinter.PrintRangeQPrinter.AllPages # 0 打印所有页面QPrinter.Selection # 1 打印选定内容QPrinter.PageRange # 2 打印指定的页面范围QPrinter.CurrentPage # 3 只打印当前页面# 打印模式(分辨率) QPrinter.PrinterModeQPrinter.ScreenResolution # 0 将打印设备的分辨率设置为屏幕分辨率QPrinter.PrinterResolution # 1 此值已弃用QPrinter.HighResolution # 2 将打印机分辨率设置为为正在使用的打印机定义的分辨率# 打印设备状态 QPrinter.PrinterStateQPrinter.Idle # 0 空闲QPrinter.Active # 1 活跃的QPrinter.Aborted # 2 异常中止连接QPrinter.Error # 3 错误# 指定页面和纸张大小的测量单位 QPrinter.UnitQPrinter.Millimeter # 0 毫米QPrinter.Point # 1 单位被定义为1/72英寸QPrinter.Inch # 2 英寸QPrinter.Pica # 3 QPrinter.Didot # 4QPrinter.Cicero # 5QPrinter.DevicePixel # 6 单位与分辨率有关,并基于打印机上的实际像素或点
- 常用API
# 构造函数 # 实例化打印机对象 QPrinter() # 实例化打印机对象,并指定打印机信息和打印模式(分辨率) QPrinter(const QPrinterInfo &printer, QPrinter.PrinterMode mode = ScreenResolution) # 实例化打印机对象,并指定模式(分辨率) QPrinter(QPrinter.PrinterMode mode = ScreenResolution)abort() # 中止当前的打印运行# 如果打印运行被成功中止,则返回true, PrinterState()将返回QPrinter.aborted;# 如果打印运行中止失败,则返回false# 并非总是可以中止打印作业。例如,所有数据都已发送到打印机,但打印机不能或不会在被要求取消作业时取消该作业 collateCopies() # 返回是否启用选择多个副本 colorMode() # 返回当前颜色模式 copyCount() # 返回要打印的拷贝数。缺省值为1 creator() # 返回创建文档的应用程序的名称 docName() # 返回文档名称 duplex() # 返回当前双工模式 fontEmbeddingEnabled() # 如果启用了字体嵌入,则返回true fromPage() # 返回要打印的页面范围中第一页的页码# 默认情况下,返回0,表示“from page”设置未设置 fullPage() # 返回打印机坐标系统的原点是否在页面的角上 isValid() # 返回当前选择的打印机是否有效,或者是纯PDF打印机 newPage() # 弹出当前页面并在新页面上继续打印。如果成功返回true;否则返回false# 在非活动QPrinter对象上调用newPage()总是会失败 outputFileName() # 返回输出文件的名称。默认是空字符串(表示打印机不应该打印到file) outputFormat() # 返回此打印机的输出格式 pageLayout() # 返回当前页面布局 pageOrder() # 返回当前页面顺序 pageRect(QPrinter.Unit) # 以指定单位返回打印区域大小 paperRect(QPrinter.Unit) # 以指定单位返回纸张的大小 paperSource() # 返回打印机的纸张源(手动或托盘或纸盒) pdfVersion() # 返回此打印机的PDF版本。默认为PdfVersion_1_4 printEngine() # 返回打印机使用的打印引擎 printProgram() # 返回将打印输出发送到打印机的程序的名称 printRange() # 返回QPrinter的页面范围。打开打印设置对话框后,该函数返回用户选择的值 printerName() # 返回打印机名称。该值最初设置为默认打印机的名称 printerSelectionOption() # 返回打印机选项选择字符串,默认返回空字符串,意味着以与系统相关的方式选择打印机 printerState() # 返回打印机的当前状态。这可能并不总是准确的 resolution() # 返回当前假定的打印机分辨率,由setResolution()或打印机驱动程序设置 supportedPaperSources() # 返回此打印机支持的纸张大小。仅在windows中可用 supportedResolutions() # 返回打印机表示支持的分辨率列表(每英寸点整数列表) supportsMultipleCopies() # 打印机是否支持在一个作业中打印同一文档的多个副本 toPage() # 返回要打印的页面范围中最后一页的页码PaintEngine()setResolution() # 设置分辨率 setOrientation() # 设置页面方向 setPaperSize() # 设置纸张大小 setResolution(int dpi) # 设置分辨率,单位是每英寸点(DPI)。 setFullPage(bool fp) # 如果fp为true,则支持在整个页面上绘制;否则将绘画限制在设备报告的可打印区域。 setCopyCount(int count) # 设置打印份数 setEngines(QPrintEngine *printEngine, QPaintEngine *paintEngine) # QPrinter的子类使用这个函数来指定自定义打印和绘制引擎(分别是printenengine和paintenengine) setCollateCopies(bool collate) # 设置出现打印对话框时排序复选框的默认值 setColorMode(QPrinter.ColorMode newColorMode) # 设置打印机的颜色模式 setCreator(const QString &creator) # 设置创建文档的应用程序的名称 setDocName(const QString &name) # 设置文档名称,文档名称不会影响文件名 setDuplex(QPrinter.DuplexMode duplex) # 启用基于双面模式的双面打印 setFontEmbeddingEnabled(bool enable) # 是否启用字体嵌入 setFromTo(int from, int to) # 设置要打印的页面范围,由from和to指定编号的页面# from和to都设置为0,则将打印整个文档 setOutputFileName(const QString &fileName) # 设置输出文件的名称# 文件名称设置为null或空名称(0或"")将禁用打印到文件。设置非空名称可以打印到文件 setOutputFormat(QPrinter.OutputFormat format) # 设置此打印机要格式化的输出格式 setPageLayout(const QPageLayout &newLayout) # 设置页面布局 setPageMargins(const QMarginsF &margins) # 使用当前单位设置页边距为页边距。如果成功设置页边距,则返回true setPageMargins(const QMarginsF &margins, QPageLayout.Unit units) # 设置页边距为给定单位的页边距。如果没有提供单位,则使用当前单位 setPageOrder(QPrinter.PageOrder pageOrder) # 设置页面打印顺序 setPageOrientation(QPageLayout.Orientation orientation) # 设置页面方向为纵向或横向 setPageSize(const QPageSize &pageSize) # 设置页面大小 setPaperSource(QPrinter.PaperSource source) # 设置纸张源 setPdfVersion(QPagedPaintDevice.PdfVersion version) # 设置打印机的PDF版本 setPrintProgram(const QString &printProg) # 设置将应该执行打印作业的程序的名称 setPrintRange(QPrinter.PrintRange range) # 设置打印范围选项 setPrinterName(const QString &name) # 设置打印机名称# 如果名称为空,则输出格式将设置为PdfFormat。# 如果名称不是有效的打印机,则不会进行更改。# 如果名称是有效的打印机,则输出格式将设置为NativeFormat setPrinterSelectionOption(const QString &option) # 设置打印机使用选项来选择打印机 setMargins(const QPagedPaintDevice.Margins &m)
QPrintPreviewWidget
- 描述
- QPrintPreviewWidget类提供了一个小部件,用于预览打印机输出的页面布局
- QPrintPreviewDialog在内部使用QPrintPreviewWidget,QPrintPreviewWidget的目的是使预览嵌入到其他小部件中成为可能。
- 它还使得围绕它构建一个不同于QPrintPreviewDialog提供的默认用户界面的用户界面成为可能
- 继承自:QWidget
- 枚举
# 描述预览小部件的视图模式 QPrintPreviewWidget.ViewModeQPrintPreviewWidget.SinglePageView # 0 查看预览中的单个页面的模式QPrintPreviewWidget.FacingPagesView # 1 一种模式,在这种模式下,预览中的面向页被查看QPrintPreviewWidget.AllPagesView # 2 查看模式,其中查看预览中的所有页面# 描述预览小部件的缩放模式 QPrintPreviewWidget.ZoomModeQPrintPreviewWidget.CustomZoom # 0 缩放设置为自定义缩放值QPrintPreviewWidget.FitToWidth # 1 此模式使当前页面适合于视图的宽度QPrintPreviewWidget.FitInView # 2 此模式适合视图内的当前页面
- 常用API
# 构造函数 # 构造一个QPrintPreviewWidget对象 QPrintPreviewWidget() # 构造一个QPrintPreviewWidget对象,指定父控件的同时设置窗口标志 QPrintPreviewWidget(QWidget *parent = nullptr, Qt.WindowFlags flags = Qt.WindowFlags()) # 构造一个基于打印机的QPrintPreviewWidget对象,指定父控件的同时设置窗口标志 QPrintPreviewWidget(QPrinter *printer, QWidget *parent = nullptr, Qt.WindowFlags flags = Qt.WindowFlags())currentPage() # 返回预览中当前查看的页面 orientation() # 返回预览的当前方向 pageCount() # 返回预览中的页数 viewMode() # 返回当前视图模式。默认的视图模式是SinglePageView zoomFactor() # 返回视图的缩放系数 zoomMode() # 返回当前缩放模式setVisible(bool visible) print() # 将预览打印到与预览相关联的打印机 updatePreview() # 更新预览,这会导致paintrerequested()信号被发出 zoomIn(qreal factor = 1.1) # 按比例放大当前视图。factor的默认值是1.1 zoomOut(qreal factor = 1.1) # 按比例缩小当前视图。factor的默认值是1.1setViewMode(QPrintPreviewWidget.ViewMode mode) # 根据索引设置视图模式。默认的视图模式是SinglePageView setAllPagesViewMode() # 设置视图模式为AllPagesView,与调用 setViewMode(QPrintPreviewWidget.AllPagesView)相同 setFacingPagesViewMode() # 设置视图模式为FacingPagesView,与调用 setViewMode(QPrintPreviewWidget.FacingPagesView)相同 setSinglePageViewMode() # 设置视图模式为SinglePageView,与调用 setViewMode(QPrintPreviewWidget.SinglePageView)相同setCurrentPage(int page) # 在预览中设置当前页面。这将导致视图跳转到页面的开头setOrientation(QPrinter.Orientation orientation) # 根据索引设置当前方向 setLandscapeOrientation() # 设置当前方向为Landscape,与调用setOrientation(QPrinter.Landscape)相同 setPortraitOrientation() # 设置当前方向为Portrait,与调用 setOrientation(QPrinter.Portrait)相同setZoomFactor(qreal factor) # 设置视图的缩放系数setZoomMode(QPrintPreviewWidget.ZoomMode zoomMode) # 根据索引设置缩放模式。默认的缩放模式是FitInView fitInView() # 设置缩放模式为FitInView,与调用setZoomMode(QPrintPreviewWidget.FitInView)相同 fitToWidth() # 设置缩放模式为FitToWidth,与调用setZoomMode(QPrintPreviewWidget.FitToWidth)相同
- 可用信号
paintRequested(QPrinter *printer) # 当预览小部件需要生成一组预览页面时,就会发出这个信号,Printer是与这个预览小部件关联的打印机 previewChanged() # 每当预览小部件改变了某些内部状态(比如方向)时,就会发出这个信号
QPrintPreviewDialog
- 描述
- 用于预览和配置打印机输出的页面布局的对话框
- 可以用现有的QPrinter对象构造一个QPrintPreviewDialog
- 也可以让QPrintPreviewDialog为您创建一个QPrintPreviewDialog,它将是系统默认的打印机
- 将paintrerequested()信号连接到插槽。当对话框需要生成一组预览页面时,paintrerequested()信号将被发出
- 继承自:QDialog
- 常用API
# 构造函数 QPrintPreviewDialog() # 创建一个内部QPrinter对象,该对象将使用系统默认打印机 QPrintPreviewDialog(QWidget *parent = nullptr, Qt.WindowFlags flags = Qt.WindowFlags()) # 构造一个基于指定打印机的QPrintPreviewDialog对象,并以parent作为父部件 QPrintPreviewDialog(QPrinter *printer, QWidget *parent = nullptr, Qt.WindowFlags flags = Qt.WindowFlags())done(int result) # 关闭对话框并将其结果代码设置为result# 重写 QDialog.done(int r)# 如果使用exec()显示此对话框,done()也会导致本地事件循环结束,并且exec()返回result open(QObject *receiver, const char *member) # 打开对话框并将其完成的(int)信号连接到由接收器和成员指定的插槽 printer() # 返回与QPrintPreviewDialog关联的QPrinter对象setVisible(bool visible) # 是否可见
- 可用信号
paintRequested(QPrinter *printer) # 当生成一组预览页面时,就会发出这个信号 # 所提供的打印机实例是绘制设备,您应该在其上绘制每个页面的内容,使用QPrinter实例的方式与直接打印时的方式相同
QPrintEngine
- 描述
- 用于预览和配置打印机输出的页面布局的对话框
- QPrintEngine类定义了一个接口,用于QPrinter如何与给定的打印子系统交互
- 在创建自己的打印引擎时,常见的情况是同时从QPaintEngine和QPrintEngine派生
- 打印引擎的各种属性由property()给出,并由setProperty()设置。
- 继承自:simplewrapper
- 枚举
- QPrintEngine.PrintEnginePropertyKey
- 用于打印引擎和QPrinter之间的属性通信。给定的打印引擎可能支持也可能不支持某个属性
QPrintEngine.PrintEnginePropertyKey# QPrintEngine.PPK_CollateCopies # 0 一个布尔值,指示是否应该对打印输出进行排序# QPrintEngine.PPK_ColorMode # 1 指Qprinter.ColorMode,可以是彩色的,也可以是单色的# QPrintEngine.PPK_Creator # 2 描述文档创建者的字符串# QPrintEngine.PPK_Duplex # 20 一个布尔值,指示是否应将打印纸的两面用于打印输出# QPrintEngine.PPK_DocumentName # 3 在假脱机程序中描述文档名称的字符串# QPrintEngine.PPK_FontEmbedding # 19 一个布尔值,指示文档字体的数据是否应该嵌入到发送到打印机的数据中# QPrintEngine.PPK_FullPage # 4 一个布尔值,描述打印机是否应该满页# QPrintEngine.PPK_Orientation # 6 指定Qprinter.Orientation值# QPrintEngine.PPK_OutputFileName # 7 以字符串形式输出文件名。空文件名表示打印机不应该打印到某个文件# QPrintEngine.PPK_PageOrder # 8 指定Qprinter.PageOrder值# QPrintEngine.PPK_PageRect # 9 指定页面矩形的QRect# QPrintEngine.PPK_PaperRect # 11 指定纸张矩形的QRect# QPrintEngine.PPK_PaperSource # 12 指定Qprinter.PaperSource值# QPrintEngine.PPK_PaperSources # 21 指定多个QPrinter.PaperSource值# QPrintEngine.PPK_PaperName # 26 指定论文名称的字符串# QPrintEngine.PPK_PaperSize # PPK_PageSize 指定QPrinter.PaperSize值# QPrintEngine.PPK_PrinterName # 13 指定打印机名称的字符串# QPrintEngine.PPK_PrinterProgram # 14 指定用于打印的打印机程序名称的字符串# QPrintEngine.PPK_Resolution # 15 描述这台打印机每英寸网点数的整数# QPrintEngine.PPK_SelectionOption # 16# QPrintEngine.PPK_SupportedResolutions # 17 描述打印机支持的一组分辨率的整数QVariant列表# QPrintEngine.PPK_WindowsPageSize # 18 在Windows上指定DM_PAPER条目的整数# QPrintEngine.PPK_CustomPaperSize # 22 在QPrinter.Point单位中指定自定义纸张大小的QSizeF# QPrintEngine.PPK_PageMargins # 23 一个QList<QVariant>,包含QPrinter.Point单元中的左、上、右和下边距值# QPrintEngine.PPK_CopyCount # 24 指定要打印的副本数量的整数# QPrintEngine.PPK_SupportsMultipleCopies # 25 一个布尔值,指示打印机是否支持在一个作业中打印多个副本# QPrintEngine.PPK_QPageSize # 27 使用QPageSize对象设置页面大小# QPrintEngine.PPK_QPageMargins # 28 使用QMarginsF和QPageLayout.Unit的QPair设置页边距# QPrintEngine.PPK_QPageLayout # 29 使用QPageLayout对象设置页面布局# QPrintEngine.PPK_CustomBase # 0xff00 扩展的基础
- 常用API
QPrintEngine() # 构造函数 abort() # 指示打印引擎中止打印过程。如果成功返回true;否则返回false printerState() # 返回打印引擎正在使用的打印机的当前状态 newPage() # 指示打印引擎开始一个新页面。如果打印机能够创建新页面,则返回true;否则返回false metric(QPaintDevice.PaintDeviceMetric id) # 返回给定id的度量 property(QPrintEngine.PrintEnginePropertyKey key) # 返回由键指定的打印引擎属性 setProperty(QPrintEngine.PrintEnginePropertyKey key, const QVariant &value) # 将键指定的打印引擎属性设置为给定值
QPrinterInfo
- 描述
- 提供对现有打印机信息的访问
- 使用静态函数生成QPrinterInfo对象列表。
- 列表中的每个QPrinterInfo对象表示一台打印机,可以查询名称、支持的纸张大小以及它是否是默认打印机
- 继承自:simplewrapper
- 常用API
QPrinterInfo() # 构造一个空的QPrinterInfo对象 QPrinterInfo(const QPrinter &printer) # 从printer构造一个QPrinterInfo对象 QPrinterInfo(const QPrinterInfo &other) # 构造other的副本QPrinterInfo.operator=(const QPrinterInfo &other) # 设置QPrinterInfo对象等于other availablePrinterNames() # 返回此系统上所有可用打印机名称的列表# 建议使用此方法而不是availablePrinters(),因为它在大多数系统上会更快。# 请注意,如果在本地系统或远程打印服务器上进行了更改,该列表可能会过时# 只在需要时实例化所需的QPrinterInfo实例,并在调用之前始终检查有效性 availablePrinters() # 返回系统中所有可用打印机的QPrinterInfo对象列表# 不建议使用此方法,因为创建每个打印机实例可能需要很长时间,特别是在存在远程联网打印机的情况下# 并且如果在本地系统或远程打印服务器上进行更改,保留的实例可能会过时 defaultColorMode() # 返回此打印机的默认颜色模式 defaultDuplexMode() # 返回此打印机的默认双工模式 defaultPageSize() # 返回此打印机的当前默认页面大小 defaultPrinter() # 返回系统上的默认打印机# 在使用返回值之前,应该使用isNull()检查返回值,以防没有默认打印机。 defaultPrinterName() # 返回当前默认打印机名称 description() # 返回打印机的可读描述 isDefault() # 返回此打印机当前是否为默认打印机 isNull() # 返回QPrinterInfo对象是否包含打印机定义。# 例如,当系统上没有打印机时,调用defaultPrinter()可能会产生一个空的QPrinterInfo对象 isRemote() # 返回此打印机是否为远程网络打印机 location() # 返回打印机的可读位置 makeAndModel () # 返回可读打印机的品牌和型号 maximumPhysicalPageSize () # 返回此打印机支持的最大物理页面大小 minimumPhysicalPageSize() # 返回此打印机支持的最小物理页面大小 printerInfo(const QString &printerName) # 返回打印机prinintername# 在使用返回值之前应该使用isNull()进行检查,以防指定的打印机不存在 printerName() # 返回打印机的名称 state() # 返回该打印机的当前状态 supportedColorModes() # 返回此打印机支持的颜色模式 supportedDuplexModes() # 返返回此打印机支持的双工模式列表 supportedPageSizes() # 返回此打印机支持的页面大小列表 supportedResolutions() # 返回此打印机支持的分辨率列表 supportsCustomPageSizes() # 返回此打印机是否支持自定义页面大小