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.py
    QPrinter(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                      # 返回要打印的最后一页,默认值为0
    
    maxPage()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.ColorMode
        QPrinter.Color	                # 1	如果可用,以彩色打印,否则以灰度打印
        QPrinter.GrayScale	            # 0	以灰度打印,即使在彩色打印机上也是如此
        
    # 单双面打印
    QPrinter.DuplexMode
        QPrinter.DuplexNone             # 0	单面打印
        QPrinter.DuplexAuto             # 1	打印机的默认设置,用于确定是否使用双面打印
        QPrinter.DuplexLongSide         # 2	双面打印,长边翻转
        QPrinter.DuplexShortSide        # 3	双面打印,短边翻转
    
    # 打印方向
    # 此枚举类型(不要与Orientation混淆)用于指定每个页面的方向
    QPrinter.Orientation
        QPrinter.Portrait               # 0	纵向,页面的高度大于宽度
        QPrinter.Landscape              # 1	横向,页面的宽度大于高度
    
    # 打印格式    
    QPrinter.OutputFormat
        QPrinter.NativeFormat           # 0 QPrinter将使用它运行的平台定义的方法打印输出。当直接打印到打印机时,此模式是默认的
        QPrinter.PdfFormat              # 1 QPrinter将生成一个可搜索的PDF文件。当打印到文件时,此模式是默认的
    
    # 打印顺序
    QPrinter.PageOrder
        QPrinter.FirstPageFirst         # 0 编号最低的那一页优先打印
        QPrinter.LastPageFirst          # 1 编号最高的那一页优先打印
        
    # 纸张大小
    # QPrinter不检查纸张尺寸是否可用;它只是使用这些信息
    # 连同QPrinter.Orientation 和QPrinter.setFullPage(),来确定可打印的区域
    QPrinter.PaperSize
        # 标准Postscript和Windows Executive大小
        QPageSize.ExecutiveStandard
        # 标准Postscript和Windows DMPAPER_FOLIO大小
        QPageSize.FanFoldGermanLegal
            QPageSize.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.PaperSource
        QPrinter::Auto
        ...
        QPrinter.LastPaperSource
        
    # 打印范围
    QPrinter.PrintRange
        QPrinter.AllPages          # 0 打印所有页面
        QPrinter.Selection         # 1 打印选定内容
        QPrinter.PageRange         # 2 打印指定的页面范围
        QPrinter.CurrentPage       # 3 只打印当前页面
    
    # 打印模式(分辨率)
    QPrinter.PrinterMode
        QPrinter.ScreenResolution       # 0 将打印设备的分辨率设置为屏幕分辨率
        QPrinter.PrinterResolution      # 1 此值已弃用
        QPrinter.HighResolution         # 2 将打印机分辨率设置为为正在使用的打印机定义的分辨率
        
    # 打印设备状态
    QPrinter.PrinterState
        QPrinter.Idle               # 0 空闲
        QPrinter.Active             # 1 活跃的
        QPrinter.Aborted            # 2 异常中止连接
        QPrinter.Error              # 3 错误
        
    # 指定页面和纸张大小的测量单位
    QPrinter.Unit
        QPrinter.Millimeter         # 0 毫米
        QPrinter.Point              # 1 单位被定义为1/72英寸
        QPrinter.Inch               # 2 英寸
        QPrinter.Pica               # 3 
        QPrinter.Didot              # 4
        QPrinter.Cicero             # 5
        QPrinter.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.ViewMode
        QPrintPreviewWidget.SinglePageView     # 0 查看预览中的单个页面的模式
        QPrintPreviewWidget.FacingPagesView    # 1 一种模式,在这种模式下,预览中的面向页被查看
        QPrintPreviewWidget.AllPagesView       # 2 查看模式,其中查看预览中的所有页面
    
    # 描述预览小部件的缩放模式
    QPrintPreviewWidget.ZoomMode
        QPrintPreviewWidget.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.1
    
    setViewMode(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()                   # 返回此打印机是否支持自定义页面大小
    

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

光电传感器的工作原理简介

光电传感器是一种利用光电效应将光信号转换为电信号的传感器。 工作原理 光照射&#xff1a;光电传感器通过光源&#xff08;如LED或激光&#xff09;照射在其表面。 光电转换&#xff1a;光线与传感器材料发生光电反应&#xff0c;产生电信号。这种转换过程涉及到光子与电子的…

论文解读 --- 《针对PowerShell脚本的有效轻量级去混淆和语义感知攻击检测》

开篇 今天我们继续来解读安全行业优秀论文&#xff0c;通过学习他人的智慧成果&#xff0c;可以不断丰富我们的安全视野&#xff0c;使用它山之石来破解自身的难题。 这次要解读的论文为《Effective and Light-Weight Deobfuscation and Semantic-Aware Attack Detection for…

解决宝塔的FTP无法使用被动模式

问题&#xff1a;宝塔安装完ftp管理软件之后&#xff0c;无法使用被动模式连接 解决&#xff1a; 提示&#xff1a; 如果还是不行&#xff0c;那么要看看防火墙和安全组有没有放行被动模式的端口&#xff0c;宝塔安装的pure-ftpd软件的被动模式端口默认是39000至400…

使用稳压管和三极管射极输出器电路驱动PMOS

当电源电压大于PMOS 管的最大栅源电源时&#xff0c;不能直接把栅极拉到地&#xff0c;需要一点特殊的电路来限制栅极驱动电压。有的地方是用电阻分压器做的&#xff0c;比如这种&#xff1a; NPN 三极管导通时&#xff0c;MOS 管栅极电压是两个电阻中间的电压。这种设计最大的…

“华为杯“华南理工大学程序设计竞赛 L-再一道好题

题目 #include<bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second const int maxn 1e6 5; const int inf 1e9 5;using namespace std;int n, m;void solve(){int res 0;int q;string s;int k;cin …

华为ensp中nat server 公网访问内网服务器

作者主页&#xff1a;点击&#xff01; ENSP专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年4月15日17点30分 NAT服务器是一种在网络边界设备上配置的服务&#xff0c;它允许外部网络的用户访问内部网络中的服务或主机&#xff0c;同时隐藏了内部网络的真实IP地…

Eigen笔记2:矩阵拼接

直接贴代码吧&#xff0c;使用的MatrixXd 和<<运算符&#xff1a; int main(int argc, char *argv[]) {Eigen::MatrixXd B(2, 2);B << 1, 2,3, 4;Eigen::MatrixXd C(2, 2);C << 5, 6,7, 8;Eigen::MatrixXd D(2, 2);D << 9, 10,11, 12;Eigen::MatrixXd…

《由浅入深学习SAP财务》:第2章 总账模块 - 2.6 定期处理 - 2.6.5 年末操作:维护新财政年度会计凭证编号范围

2.6.5 年末操作&#xff1a;维护新财政年度会计凭证编号范围 财务系统的维护者要在每年年末预先设置好下一年度的会计凭证编号范围&#xff08;number range&#xff09;&#xff0c;以便下一年度会计凭证能够顺利生成。这一操作一定要在下一年度1月1日以前预先完成。 …

基于SSM项目高校在线请假与审批系统

采用技术 基于SpringBoot框架实现的web的智慧社区系统的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringMVCMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 简介 本系统实现了管理员&#xff0c;教师&#xff0c;学生三个模…

《QT实用小工具·二十五》日志重定向输出

1、概述 源码放在文章末尾 日志重定向输出&#xff0c;包含如下功能&#xff1a; 支持动态启动和停止。支持日志存储的目录。支持网络发出打印日志。支持输出日志上下文信息比如所在代码文件、行号、函数名等。支持设置日志文件大小限制&#xff0c;超过则自动分文件&#xf…

JS - 关于DOM的介绍和使用01

DOM&#xff08;Document Object Model&#xff09;是一种用于表示和操作HTML、XML等文档结构的编程接口。在JavaScript中&#xff0c;通过DOM可以访问和操作网页中的各种元素、属性和事件。 获取元素&#xff1a; 通过ID获取元素&#xff1a;使用document.getElementById(el…

4.Godot图片素材的获取和编辑

游戏开发中经常遇到图片素材的需求 1. 图片素材的准备 术语&#xff1a;Sprite 精灵&#xff0c;游戏开发中指一张图片来源不明的图片&#xff0c;切勿在商业用途使用&#xff0c;以免引起版权风险。 1. 在学习阶段&#xff0c;可以百度或者从一些资源网站获取&#xff0c;这…

面试题总结:HashMap底层原理

不仅仅是一道题&#xff0c;之后的某一天&#xff0c;它可能是破局的关键。 关于HashMap的知识点有哪些呢&#xff1f;分层次展示 1.基础知识&#xff1a; 存储键值对结构、底层数据结构、红黑树和链表 2.位运算与实现 位运算、put、get方法的实现 3.关于锁 segment锁和桶锁、线…

OpenCV基本图像处理操作(三)——图像轮廓

轮廓 cv2.findContours(img,mode,method) mode:轮廓检索模式 RETR_EXTERNAL &#xff1a;只检索最外面的轮廓&#xff1b;RETR_LIST&#xff1a;检索所有的轮廓&#xff0c;并将其保存到一条链表当中&#xff1b;RETR_CCOMP&#xff1a;检索所有的轮廓&#xff0c;并将他们组…

广东莱斯广告,6.8米UV喷印推动粤东喷绘产业升级

广东莱斯广告作为汕头市大型的广告服务运营商,近日迎来了一件值得庆祝的事情:彩神6.8米UV喷印机运行一周年,销售服务商深圳嘉豪总经理李伟特地前来回访。该设备是深圳润天智数字设备股份有限公司开发的全球首台搭载XTRA6800H柯尼卡喷头的设备,设备特点是:1.色彩艳丽;2.超宽喷印…

Suno,属于音乐的ChatGPT时刻来临

AI绘画 AI视频我们见过了&#xff0c;现如今AI都能生成一首音乐&#xff0c;包括编曲&#xff0c;演唱&#xff0c;而且仅需几秒的时间便可创作出两分钟的完整歌曲 相信关注苏音的很大一部分都是从获取编曲或者混音插件来的&#xff0c;现如今AI却能帮你几秒生成曲子 今天就带…

Postgresql源码(125)游标恢复执行的原理分析

问题 为什么每次fetch游标能从上一次的位置继续&#xff1f;后面用一个简单用例分析原理。 【速查】 恢复扫描需要知道当前页面、上一次扫描到的偏移位置、当前页面一共有几条&#xff1a; 当前页面&#xff1a;HeapScanDesc结构中记录了扫到的页面&#xff08;scan->rs_cb…

计算机网络:数据链路层 - CSMA/CA协议

计算机网络&#xff1a;数据链路层 - CSMA/CA协议 CSMA/CA概述帧间间隔工作原理退避算法虚拟载波监听 CSMA/CA概述 讲解CSMA/CA之前&#xff0c;我们回顾一下CSMA/CD的三个特性&#xff1a; 多址接入MA&#xff1a;多个主机连接在一条总线上&#xff0c;竞争使用总线 载波监听…

2024年主流的java混淆工具有哪些

2024年&#xff0c;主流的Java混淆工具可能会包括&#xff1a; ProGuard&#xff1a;ProGuard 是一个免费的开源 Java 混淆工具&#xff0c;可用于压缩、优化和混淆 Java 字节码。它是Android开发者的首选混淆工具之一&#xff0c;并且在Java应用程序中也得到了广泛应用。 Dex…

Stable Diffusion超详细教程!从0-1入门到进阶

一、本地部署 Stable Diffusion 前言 目前市面上比较权威&#xff0c;并能用于工作中的AI绘画软件其实就两款。一个叫Midjourney&#xff08;简称MJ&#xff09;&#xff0c;另一个叫Stable-Diffusion&#xff08;简称SD&#xff09;。MJ需要付费使用&#xff0c;而SD开源免费…