QGraphicsview/-scene konzeptionelles Problem zum Skalieren

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Benutzeravatar
Arthur Dent
User
Beiträge: 23
Registriert: Montag 12. September 2011, 09:51

Hallo

Ich möchte beim skalieren einer Graphicsscene, dass bestimmte items ihre "sichtbare" Größe auf dem Bildschirm beibehalten. Also sozusagen dass nur die Abstände der items skaliert werden.

Wenn ich zum Beispiel eine Linie zeichne und die Endpunkte mit dicken Punkten markiere, möchte ich dass sich die Länge der Linie sowie die position der Markierungspunkte gemäß bem Skalierungsfaktor ändert, die größe der Markierungspunkte auf dem Bildschirm jedoch nicht.

Bevor ich mich dabei in meiner Idee verrenne, wollte ich mal nachfragen ob das überhaupt sinn macht.
Meine Idee dazu ist: Jedes mal wenn der inhalt des Graphicsview skaliert wird, müsste man die items, die ihre dargestellte Größe behalten sollen mit "entgegengesetztem" Skalierungsfaktor skalieren. Also ungefähr so:

- Eine Klasse von Items ableiten die ihre größe behalten (lockedSizeItem oder so)
- ein Event suchen oder selber implementiern, das immer kommt wenn das Graphicsview skaliert wird
- bei diesem Event alle lockedSizeItems in der Scene vergrößern/verkleinern


Bitte sagt mir ob das ein vernünftiger Ansatz ist, oder ob das einfacher geht. Außerdem hab ich angesichts dieser wagen Idee keine genaue Vorstellung wie man das sinnvoll implementiert. Falls mir jemand kurz einen lösungsweg skizzieren könnte wäre ich sehr Dankbar.

Gruß Arthur Dent
Optimismus ist, bei Gewitter auf dem höchsten Berg in einer Kupferrüstung zu stehen und "scheiß Götter" zu rufen

Terry Pratchett
lunar

@Arthur Dent: Setze bei Elementen, die nicht skaliert werden sollen, das Flag "QGraphicsItem.ItemIgnoresTransformations". Falls Du mehr Kontrolle möchtest, kannst Du auch per "view.transform().inverted()" die inverse Transformation des Views auf das Item anwenden. Dann allerdings ist das Item fest an den View gebunden, insbesondere kannst Du dann nicht dieselbe Szene in zwei verschiedenen Views mit unterschiedlicher Skalierung anzeigen.
Benutzeravatar
Arthur Dent
User
Beiträge: 23
Registriert: Montag 12. September 2011, 09:51

Vielen Dank für die Hilfe!!!

war genau das was ich gesucht habe.
Optimismus ist, bei Gewitter auf dem höchsten Berg in einer Kupferrüstung zu stehen und "scheiß Götter" zu rufen

Terry Pratchett
Antworten