breite einer QGraphicsScene nach der Skalierung

Alles rund um die Programmierung mit Qt
Antworten
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

breite einer QGraphicsScene nach der Skalierung

Beitrag von anno1988 »

Wenn ich mir QGraphicsView "scale(1.05, 1.05)" aufrufe, wird die Ansicht innerhalt des QGraphicView Objekts vergrößert.

Wenn ich dann aber die neue Breite der QGraphicsScene zurück erhalten will, bekomme ich immer nur die Originalgröße zurück.

Wie bekomme ich denn die Breite nach der Skalierung heraus?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Die scene ändert sich nicht, nur der Blick der View auf die scene.
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Beitrag von anno1988 »

wie wird denn da die Skalierung berechnet, wenn ich mehrfach scale ausführe?

Code: Alles auswählen


scale(1.05, 1.05);
scale(1.05, 1.05);
scale(1.05, 1.05);
scale(1.05, 1.05);
scale(1.05, 1.05);
scale(1.05, 1.05);

Hier führe ich es 6x aus. Wenn ich jetzt aber z.B. 1.05^6 rechte komme ich auf 1.34. Da ist die Originalbreite multipliziert mit diesem Faktor aber immer noch zu klein im Gegensatz zur skalierten Größe der QGraphicScene.

Kann es vielleicht auch sein, dass die Breite bzw. Höhe nach jedem skalieren neu mit 1.05 genommen wird. Hiere habe ich es jetzt ja so berechnet, dass ich immer von der Originalgröße ausgehe.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

anno1988 hat geschrieben:Kann es vielleicht auch sein, dass die Breite bzw. Höhe nach jedem skalieren neu mit 1.05 genommen wird. Hiere habe ich es jetzt ja so berechnet, dass ich immer von der Originalgröße ausgehe.
Höhe und Breite werden gar nicht angerührt! QGraphicsView hält eine QTransform, die beim Zeichnen angewandt wird. Und ein weiteres view.scale() scaliert einfach die aktuelle QTransform. Wenn diese schon skaliert ist, wird natürlich erneut von der bereits durchgeführten Skalierung weiter gemacht.
Was ist denn eigentlich dein Problem? Was willst du mit den exakten Berechnungen und zigmaligen scale() erreichen?
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Beitrag von anno1988 »

ich will einfach wissen wie breit das QGraphicScene nach der Skalierung ist. (also das was man sieht), nicht die originalgröße.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Einfach eine passende Version von view.mapFromScene wählen (z.B. die mit QRectF), und ein passendes Argument übergeben (z.B. scene.sceneRect()).
Wie du von dem zurückgegebenen QRectF die Breite bekommst steht in der Doku.
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Beitrag von anno1988 »

wie sieht es denn da mit dem scale faktor aus den man übergibt?

wenn ich z.B. "1.25" eintrage ist dann die Ansicht wirklich auf 125% vergößert?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Wenn du das gemacht hättest, was franzf dir vorgeschlagen hat, könntest du es ohne Probleme selbst rausfinden.
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Beitrag von anno1988 »

das habe ich auch gemacht. das funktioniert auch soweit.
Antworten