在QPrintPreviewWidget中更改或删除页码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在QPrintPreviewWidget中更改或删除页码相关的知识,希望对你有一定的参考价值。

是否可以删除/更改QPrintPreviewWidget中的页面编号?我试图通过将页边距设置为(0,10,0,3)来“删除”它。在打印预览对话框中,它看起来很好:页码超出了页面边框。但是当我打印页面时,仍然有页码。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from PyQt4 import QtGui, QtCore
import sys

html_text = """
        <html><head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head>
        <body>
            <p><span style=" font-size:20pt; font-weight:600;">QTextEdit</span></p>
        </body></html>
        """

class Preview(QtGui.QMainWindow):
    def __init__(self):
        super(Preview, self).__init__()

        self.textedit = QtGui.QTextEdit()
        codec = QtCore.QTextCodec.codecForHtml(html_text)
        unucode_string = codec.toUnicode(html_text)
        self.textedit.setHtml(unucode_string)    

        self.preview_widget = QtGui.QPrintPreviewWidget(self)
        self.preview_widget.resize(1100, 800)
        self.preview_widget.move(50, 50)
        self.preview_widget.paintRequested.connect(self.print_preview)
        self.preview_widget.updatePreview()

        self.resize(1200, 820)
        self.show()


    def print_preview(self, printer):
        printer.setOrientation(1)
        printer.setPageSize(8)

        # this is my attempt to solve problem:
        # printer.setPageMargins(0, 10, 0, 3, 0)

        self.textedit.print_(printer)


if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)

    mainWindows = []
    for fn in sys.argv[1:] or [None]:
        preview = Preview()
        preview.show()
        mainWindows.append(preview)

    sys.exit(app.exec_())

答案

尝试设置文档的页面大小。以下是基于您的示例的演示。 (请注意,如果使用文本小部件来保存html,则必须显示它,否则页面大小调整将无法正常工作)。

import sys
from PyQt4 import QtGui, QtCore

html = """<html><body>%s</body></html>""" % """
<p><span style=" font-size:20pt; font-weight:600;">QTextEdit</span></p>
""" * 20

class Window(QtGui.QMainWindow):
    def __init__(self):
        super(Window, self).__init__()
        self.document = QtGui.QTextDocument(self)
        self.document.setHtml(html)
        self.preview = QtGui.QPrintPreviewWidget(self)
        self.preview.paintRequested.connect(self.handlePaintRequest)
        self.setCentralWidget(self.preview)

    def handlePaintRequest(self, printer):
        printer.setOrientation(QtGui.QPrinter.Landscape)
        printer.setPageSize(QtGui.QPrinter.A3)
        self.document.setPageSize(
            QtCore.QSizeF(printer.width(), printer.height()))
        self.document.print_(printer)

if __name__ == '__main__':

    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.setGeometry(600, 100, 1200, 800)
    window.show()
    sys.exit(app.exec_())

以上是关于在QPrintPreviewWidget中更改或删除页码的主要内容,如果未能解决你的问题,请参考以下文章

git merge 后打字稿更改未编译

Linux主机安全笔记

求C语言高手帮忙。

LLVM 之 IR 篇:如何编写消除死代码 Pass

c语言程序杨辉三角

在 foreach 循环中编辑字典值