View size in Scene?

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
lightning2911
User
Beiträge: 4
Registriert: Mittwoch 5. Mai 2010, 12:43

Ich verwende ein Scene(QGraphicsScene) mit eigenem DrawBackground. In diesem zeichne ich ein graues Rechteck in sceneRect()-Größe mit grid Punkten.

Da die View mouseWheel zooming unterstützt, kann die View größer sein als das sceneRect().

Wie finde ich im DrawBackground vom Scene die View-Größe heraus, damit ich die grid Punkte im angezeigten Bereich malen kann?
lightning2911
User
Beiträge: 4
Registriert: Mittwoch 5. Mai 2010, 12:43

gelöst: drawBackground in View implementieren.
franzf
User
Beiträge: 78
Registriert: Samstag 29. August 2009, 10:21

Folgendes sollte man noch wissen:
Die scene ist immer gleich groß, egal wie tief gezoomt wurde. Der Zoom geschieht nur in der view. Diese hält ein "QTransform"-Objekt, welches beim Zeichnen die Transformationen anwendet. Wenn du also in scene dein drawBackground() implementierst, musst du dich um das Zoomlevel überhaupt nicht kümmern! Eigentlich ist dein jetziger Weg der, welcher Fehler produzieren sollte :P
Desweiteren: Um an die jeweiligen umgerechneten Größen zwischen view und scene zu kommen, gibt es in QGraphicsView die Methoden "mapFromScene" und "mapToScene". Etwas damit spielen und es sollte klar werden was die machen.

Grüße
Franz
Antworten