113.PyQt5_QtPrintSupport_打印操作

无奋斗不青春

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈
入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈
虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈
PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈
Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈
优 质 资 源 下 载 :👉👉 资源下载合集 👈👈
优 质 教 程 推 荐:👉👉 Python爬虫从入门到入狱系列 合集👈👈

分隔线

QtPrintSupport_打印操作

      • 前言
        • QPaintDevice
        • QPagedPaintDevice
        • QtPrintSupport
        • QAbstractPrintDialog
        • QPrintDialog
        • QPageSetupDialog
        • QPrinter
        • QPrintPreviewWidget
        • QPrintPreviewDialog
        • QPrintEngine
        • QPrinterInfo

前言

  • 打印图像是图像处理软件中的一个常用功能,打印图像实际上是在QPaintDevice中画图,与平时在QWidgetQPixmapQImage中画图是一样的,都是创建一个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()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()                   # 返回此打印机是否支持自定义页面大小
    

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

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

相关文章

docker搭建EFK

目录 elasticsearch1.创建网络2.拉取镜像3.创建容器如果出现启动失败&#xff0c;提示目录挂载失败&#xff0c;可以考虑如下措施 开放防火墙端口4.验证安装成功重置es密码关闭https连接创建kibana用户创建新账户给账户授权 kibana1.创建容器2.验证安装成功3.es为kibana创建用户…

ZYNQ之嵌入式开发02——LED实验

文章目录 通过GPIO控制LED状态通过按键控制LED状态通过EMIO复用PL端按键控制PS端LED状态通过EMIO复用多个PL端的GPIO GPIO(General Purpose Input Output)是一个外设&#xff0c;用来对器件的引脚做观测(输入)和控制(输出)。每个GPIO口都是独立且可以进行动态的编程的&#xff…

mybatis-plus与mybatis同时使用别名问题

在整合mybatis和mybatis-plus的时候发现一个小坑&#xff0c;单独使用mybatis&#xff0c;配置别名如下&#xff1a; #配置映射文件中指定的实体类的别名 mybatis.type-aliases-packagecom.jk.entity XML映射文件如下&#xff1a; <update id"update" paramete…

X服务器远程连接问题解决:Bad displayname ““‘或Missing X server or $DISPLAY

X服务器远程连接问题 报错1 ImportError: this platform is not supported: (failed to acquire X connection: Bad displayname "", DisplayNameError()) Try one of the following resolutions: * Please make surethat you have an X server running, and that …

Vue2 —— 学习(四)

一、收集表单数据 &#xff08;一&#xff09;介绍 前面其实已经 学过了 v-model 双向绑定事件&#xff0c;能获取到表单中的内容到 vm 实例对象中 但是前面只是收集文本框&#xff0c;下面学习一下 各种类型表单数据收集 &#xff08;单/多 选&#xff0c;下拉框&#xff0…

第十届蓝桥杯大赛个人赛省赛(软件类) CC++ 研究生组-RSA解密

先把p&#xff0c;q求出来 #include<iostream> #include<cmath> using namespace std; typedef long long ll; int main(){ll n 1001733993063167141LL, sqr sqrt(n);for(ll i 2; i < sqr; i){if(n % i 0){printf("%lld ", i);if(i * i ! n) pri…

Linux_应用篇(03) 文件 I/O 加强

经过上一章内容的学习&#xff0c;相信各位读者对 Linux 系统应用编程中的基础文件 I/O 操作有了一定的认识和理解了&#xff0c;能够独立完成一些简单地文件 I/O 编程问题&#xff0c; 如果你的工作中仅仅只是涉及到一些简单文件读写操作相关的问题&#xff0c;其实上一章的知…

玩转儿童数码摄影,儿童人像摄影指南

一、资料前言 本套儿童人像摄影&#xff0c;大小250.91M&#xff0c;共有8个文件。 二、资料目录 《爱孩子爱摄影》.pdf 《六招拍儿童》.pdf 《数码摄影工坊-儿童摄影》.pdf 《专业儿童人像摄影指南》.pdf 宝贝看镜头.pdf 儿童摄影手册.pdf 儿童摄影艺术.pdf 玩转儿童…

RUST语言值所有权之内存复制与移动

1.RUST中每个值都有一个所有者,每次只能有一个所有者 String::from函数会为字符串hello分配一块内存 内存示例如下: 在内存分配前调用s1正常输出 在分配s1给s2后调用报错 因为s1分配给s2后,s1的指向自动失效 s1被move到s2 s1自动释放 字符串克隆使用 所有整数类型,布尔类型 …

git submodule---同步最新的内容

0 Preface/Foreword 1 同步最新submodule内容到repo中 项目的repo包含了一个子模块&#xff0c;在开发过程中&#xff0c;经常需要同步子模块最新的commit到repo中。该如何操作呢&#xff1f; 本地在克隆时候&#xff0c;已经同步把子模块中的内容克隆下来了&#xff0c;但是…

第十三篇【传奇开心果系列】Python自动化办公库技术点案例示例:深度解读Python自动化操作PPT

传奇开心果博文系列 系列博文目录Python自动化办公库技术点案例示例系列 博文目录前言一、 Python自动化操作PPT能力介绍二、常用库介绍三、创建新PPT示例代码四、编辑现有PPT示例代码五、批量处理示例代码六、数据驱动生成示例代码七、合并与拆分示例代码八、母版和版式操作示…

SpringBoot整合RabbitMQ,三种交换机类型示例

SpringBoot整合RabbitMQ&#xff0c;三种交换机类型示例 1、流程概括 2、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>3、配置RabbitMQ连接 在a…

FreeGPT3.5 开源软件

GPT-3.5不需要付费&#xff0c;也不需要注册用户&#xff0c;可以直接使用了&#xff0c;官方彻底开放了API接口。 该API政策一放开&#xff0c;GitHub很快就已经出现了一个开源项目FreeGPT35&#xff0c;可以自动生成key调用GPT3.5的API接口&#xff0c;再也用不着注册账号和申…

【服务器部署篇】Linux下安装Docker容器

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过大学刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0…

MySQL学习笔记------多表查询

目录 多表关系 一对多 多对多 一对一 多表查询 概述 分类 内连接&#xff08;交集&#xff09; 隐式内连接 显式内连接 ​编辑 外连接&#xff08;from后为左表&#xff0c;join后为右表&#xff09; 左外连接 右外连接 自连接 联合查询&#xff08;union&#…

经典机器学习模型(八)梯度提升树GBDT详解

经典机器学习模型(八)梯度提升树GBDT详解 Boosting、Bagging和Stacking是集成学习(Ensemble Learning)的三种主要方法。 Boosting是一族可将弱学习器提升为强学习器的算法&#xff0c;不同于Bagging、Stacking方法&#xff0c;Boosting训练过程为串联方式&#xff0c;弱学习器…

Linux 学习之路 - 进程篇 - PCB介绍1-标识符

目录 一、基础的命令 <1> ps axj 命令 <2> top 命令 <3> proc 目录 二、进程的标识符 <1>范围 <2>如何获取标识符 <3>bash进程 三、创建进程 一、基础的命令 前面介绍了那么多&#xff0c;但是我们没有观察到进程相关状态&#x…

GitHub 仓库 (repository) Pulse - Contributors - Network

GitHub 仓库 [repository] Pulse - Contributors - Network 1. Pulse2. Contributors3. NetworkReferences 1. Pulse 显示该仓库最近的活动信息。该仓库中的软件是无人问津&#xff0c;还是在火热地开发之中&#xff0c;从这里可以一目了然。 2. Contributors 显示对该仓库进…

hadoop:案例:将顾客在京东、淘宝、多点三家平台的消费金额汇总,然后先按京东消费额排序,再按淘宝消费额排序

一、原始消费数据buy.txt zhangsan 5676 2765 887 lisi 6754 3234 1232 wangwu 3214 6654 388 lisi 1123 4534 2121 zhangsan 982 3421 5566 zhangsan 1219 36 45二、实现思路&#xff1a;先通过一个MapReduce将顾客的消费金额进行汇总&#xff0c;再通过一个MapReduce来根据金…

优思学院|如何利用Minitab进行满意度分析?常犯错误不可不知!

有网友提问如何运用Minitab进行满意度分析&#xff1f;他提出了一个企业培训的例子&#xff0c;如下图所示。 就他所展示的满意度调查表格&#xff0c;他只需要就你的数据进行描述性的统计分析&#xff0c;因为数据中没有包含比较或者对比&#xff08;例如&#xff0c;满意度调…