QtForums , QScrollArea. , , .
, , QGraphicsView. QGraphicsView.scale(float, float), ! , ( , , , hi-res ).
QGraphicsScene QGraphicsView , . , PDF, , , <QGraphicsLinearLayout.
, , pixmaps , . , , .
import sys
from PyQt4 import QtGui, QtCore
from popplerqt4 import Poppler
class Application(QtGui.QApplication):
def __init__(self):
QtGui.QApplication.__init__(self, sys.argv)
scene = QtGui.QGraphicsScene()
scene.setBackgroundBrush(QtGui.QColor('darkGray'))
layout = QtGui.QGraphicsLinearLayout(QtCore.Qt.Vertical)
document = Poppler.Document.load('/home/test.pdf')
document.setRenderHint(Poppler.Document.Antialiasing)
document.setRenderHint(Poppler.Document.TextAntialiasing)
for number in range(document.numPages()):
page = document.page(number)
image = page.renderToImage(100, 100)
pixmap = QtGui.QPixmap.fromImage(image)
container = QtGui.QLabel()
container.setFixedSize(page.pageSize())
container.setStyleSheet("Page { background-color : white}")
container.setContentsMargins(0, 0, 0, 0)
container.setScaledContents(True)
container.setPixmap(pixmap)
label = scene.addWidget(container)
layout.addItem(label)
graphicsWidget = QtGui.QGraphicsWidget()
graphicsWidget.setLayout(layout)
scene.addItem(graphicsWidget)
self.view = View(scene)
self.view.show()
class View(QtGui.QGraphicsView):
def __init__(self, parent = None):
QtGui.QGraphicsView.__init__(self, parent)
def wheelEvent(self, event):
if event.delta() > 0:
self.scale(1.1, 1.1)
else:
self.scale(0.9, 0.9)
if __name__ == "__main__":
application = Application()
sys.exit(application.exec_())