So aktivieren Sie das Schwenken und Zoomen in einer QGraphicsView

Ich verwende Python und Qt Designer, um das Laden von Tiff-Bildern zu implementieren und das Schwenken und Zoomen bei bestimmten Mausereignissen (Rad-Zoom, Drücken von Rad-Schwenken) zu aktivieren.

Ich habe mir einige Optionen und Klassen angesehen, die mit Bildern usw. arbeiten können, und bisher habe ich Folgendes gefunden:

QGraphicsScene, QImage, QGraphicsView

Ich habe drei Klassen (nur testen)

ViewerDemo welche haben QGraphicsView Element

    """description of class"""
    # Form implementation generated from reading ui file 'GraphicsViewdemo.ui'
    try:
    _fromUtf8 = QtCore.QString.fromUtf8
    except AttributeError:
        def _fromUtf8(s):
            return s
        class Ui_Dialog(object):
            def setupUi(self, Dialog):
                Dialog.setObjectName(("Dialog"))
                Dialog.resize(500, 500)
            self.graphicsView = QtGui.QGraphicsView(Dialog)
            self.graphicsView.setGeometry(QtCore.QRect(0, 0, 500, 500))
            self.graphicsView.setObjectName(("graphicsView"))
            self.retranslateUi(Dialog)
            QtCore.QMetaObject.connectSlotsByName(Dialog)
        def retranslateUi(self, Dialog):
            Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None,
QtGui.QApplication.UnicodeUTF8))

MyForm Klasse, das ist QDialog, wo ich class @ nen ViewerDemo, Bild laden und Bild in @ einfüg QGraphicsView

    import sys
    from ViewerDemo import *
    from PyQt4 import QtGui
    class MyForm(QtGui.QDialog):
        def __init__(self, url, parent=None):
            QtGui.QWidget.__init__(self, parent)


            self.ui = Ui_Dialog()
            self.ui.setupUi(self)
            self.scene = QtGui.QGraphicsScene(self)
           self.image = QtGui.QImage(url)
            pixmap= QtGui.QPixmap.fromImage(self.image)
            item=QtGui.QGraphicsPixmapItem(pixmap)
            self.scene.addItem(item)
            self.ui.graphicsView.setScene(self.scene)
            self.scale = 1
            QtCore.QObject.connect(self.scene, QtCore.SIGNAL('mousePressEvent()'),self.mousePressEvent)

    def mousePressEvent(self, event):
        print ('PRESSED : ',event.pos())

(3) ist genau dort, wo die Anwendung ausgeführt wird:

    from PyQt4 import QtGui, QtCore
    import sys
    from MyForm import MyForm
    if __name__ == "__main__":
        app = QtGui.QApplication(sys.argv)
        url = "D:/probaTiff"
        myapp = MyForm(url)
        myapp.show()
        sys.exit(app.exec_())

Ich habe herausgefunden, wie man mit einem Mausklick (links und mit dem Rad klicken) etwas macht, um Pixelkoordinaten auszudrucken (ich brauche das, um die Koordinaten im Koordinatensystem des Bildes WGS84 zu erhalten, zum Beispiel).

Was ich mehr brauche, ist, wie man ein Bild zoomt (Rad oder Doppelklick, was auch immer) und wie man ein Bild schwenkt (linke Maustaste gedrückt halten oder Rad gedrückt halten).

Oder, gibt es dafür bessere Qt-Klassen und einen besseren Weg? Kannst du mir bitte helfen?

Das ist, was ich bisher mit diesem Code habe

Antworten auf die Frage(4)

Ihre Antwort auf die Frage