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?
QGraphicsView
QGraphicsView
- Dateianhänge
-
- zugroß.png (47.19 KiB) 1977 mal betrachtet
-
- zuklein.png (32.76 KiB) 1977 mal betrachtet
Im resizeEvent() deines Widgets rufst du sowas auf wie
// edit
Wenn du auch nach Änderungen deines Baums den vollen Baum anzeigen willst, musst du natürlich obiges auch aufrufen.
Code: Alles auswählen
view->fitInView( scene->sceneRect(), Qt::KeepAspectRatio );Wenn du auch nach Änderungen deines Baums den vollen Baum anzeigen willst, musst du natürlich obiges auch aufrufen.
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
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
- Dateianhänge
-
- exampleA.png (59.97 KiB) 1966 mal betrachtet
-
- exampleB.png (56.14 KiB) 1966 mal betrachtet
-
- fenster_im_nachhinein_vergrössert.png (58.07 KiB) 1966 mal betrachtet