Seite 1 von 1

QGraphicsView: auto-resizen und zoomen

Verfasst: 25. August 2009 14:04
von olebole
Hallo, ich möchte ein QGraphicsView so gestalten, dass ich zoomen kann, es aber bei Größenänderung den aktuellen Ausschnitt behält.

Für das zoomen benutze ich einen kleinen Wrapper was soweit auch funktioniert.

Das Anpassen bei Größenänderung erfolgt über ein entsprechendes resizeEvent:

Code: Alles auswählen

class MyGraphicsView(QGraphicsView)
# ...

    def set_zoom(self, zoom):
        scale = zoom / self.zoom
        self.scale(scale, scale)
        self.zoom = zoom

    def resizeEvent(self, event):
        QGraphicsView.resizeEvent(self, event)
        self.fitInView(self.sceneRect(), Qt.QKeepAspectRatio)
Allerdings wird nun bei einer Größenänderung wieder die komplette Scene angezeigt und der ursprüngliche zoom ignoriert; sceneRect() enthält halt die komplette Scene und nicht nur den sichtbaren Ausschnitt.

Wie kann man die beiden Aufgaben (zoomen und resizen) zusammenbringen?

Viele Grüße

olebole

Wie kann ich es erreichen