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?
View size in Scene?
-
- User
- Beiträge: 4
- Registriert: Mittwoch 5. Mai 2010, 12:43
gelöst: drawBackground in View implementieren.
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
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
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
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