Seite 1 von 1

QGraphicsView

Verfasst: 6. Januar 2011 14:30
von jaronimo
Hallo alle zusammen!

Ich bastle gerade an einem Programm, das mir einen Baum (L-System) in eine QGraphicsScene zeichnet, die dann in einem QGraphicsView angezeigt wird.

Was ich gern wissen würde: wie ich den View so skaliere/zoome, dass er mir den Baum in maximaler Größe anzeigt, ohne etwas davon abzuschneiden.

Da ich kein kein Szene Rectangle mittels
scene->setSceneRect(QRectF(0, 0, sceneWidth, sceneHeight));
angegeben habe, sollte die QGraphicsScene die min/max Ausmaße meines Baumes haben.

Ich muss also nur noch View so skalieren dass die Scene den maximalen Platz darin einnimmt, um Szenarien wie in den Screenshots zu vermeiden.

Aber wie?

Verfasst: 6. Januar 2011 14:49
von upsala
Was spricht dann gegen die Verwendung von QGraphicsView::scale?

Verfasst: 6. Januar 2011 15:00
von franzf
Im resizeEvent() deines Widgets rufst du sowas auf wie

Code: Alles auswählen

view->fitInView( scene->sceneRect(), Qt::KeepAspectRatio );
// edit
Wenn du auch nach Änderungen deines Baums den vollen Baum anzeigen willst, musst du natürlich obiges auch aufrufen.

Verfasst: 6. Januar 2011 17:48
von jaronimo
Danke für den Tip, franzf!

Es klappt jetzt schon fast. Die Szene wird je nach Baumgröße skaliert. Aber es sieht so aus, als würde der View größer als der Bildausschnitt sein, weshalb man ihn scrollen muss. Erst wenn man das Fenster maximiert sieht man den gesamten View Bereich.

Wieso passt sich der View nicht an die tatsächliche Fenstergrösse an?

dass ich am resizeEvent() noch nix geändert habe, kanns denk ich nicht sein, weil ja der View immer unabhängig von der Baumgröße gleich weit gescrollt werden muss