Seite 1 von 1

[qt4] Fenstergröße automatisch anpassen?

Verfasst: 24. Februar 2009 00:41
von BeS
Hallo,

ich habe mit dem Designer ein Fenster erstellt und alles schön in Layouts gepackt. Wenn ich das Programm starte, dann wird die Größe auch sauber angepasst.

In dem Layout, dass ich mit dem Designer angelegt habe, gibt es ein QFrame, in das ich zur Laufzeit mit einem QGridLayout Elemente dynamisch reinpacken will. Der Benutzer kann aus einer ComboBox auswählen, welche Widgets er sehen will und die werden dann in das GridLayout rein gepackt.

Soweit so gut, dass Problem ist, dass das Fentster dabei nicht "mitwächst". Sobald ich anfange es von Hand zu "resizen" springt es auf die mindest Größe damit alles rein passt. Schön wäre es allerdings, wenn er das von alleine machen würde.

Bisher konnte ich dafür kein passendes Signal bzw. passende Methode finden.

Ich hoffe ich konnte mein Problem einigermaßen verständlich beschreiben. Ansonsten fragt einfach nochmal nach!

Habt ihr eine Idee wie ich das Problem lösen kann?

Vielen Danke schonmal!

Verfasst: 24. Februar 2009 08:10
von AuE

Code: Alles auswählen

adjustSize()
schon probiert?

Verfasst: 24. Februar 2009 15:33
von BeS
Danke fuer deinen Tipp!

adjustSize() hatte ich noch nicht ausprobiert, ich hab es jetzt mal immer aufgerufen, wenn ein neues Widget in das FrameLayout eingesetzt wird. Das fuehrt zu etwas flackern aber zu keiner Anpassung der groesse. :(

Verfasst: 24. Februar 2009 16:06
von AuE
also bei mir funzt das super...
hilft wohl nur noch Code.....

Ach ja.... evtl musst es 2-3 mal aufrufen( war glaube ich mal bei mir so das es beim ersten mal nicht immer gepasst hat-ka welche Version das war....)
Adjusts the size of the widget to fit the contents.

Uses sizeHint() if valid (i.e if the size hint's width and height are >= 0); otherwise sets the size to the children rectangle that covers all child widgets (the union of all child widget rectangles).

For windows, the screen size is also taken into account, and if the sizeHint() is less than (200, 100) and the size policy is expanding, the window is made to be at least (200, 100).

See also sizeHint() and childrenRect().

Verfasst: 26. Februar 2009 16:16
von BeS
Hallo und erstmal sorry für die späte Antwort!

Das Projekt ist leider etwas größer, deswegen ist es nicht so einfach aussagekräftigen Code in einem vernünftigen Umfang zu posten.

Daher habe ich versucht mal ein kleines Testprogramm zu schreiben um den Fehler zu "simulieren". Das erstaunliche: Bei dem Testprogramm hat alles völlig automatisch so funktioniert wie ich mir das vorgestellt hätte. Also auch ganz ohne einem Aufruf von adjustSize() oder so.

Es gibt nur einen Unterschied: Das Testprogramm war ein stand-alone Programm und das original läuft als QMdiSubWindow in einer QMdiArea. Genau hier scheint das Problem zu liegen, wenn ich das original Programm/widget als stand-alone Program laufen lasse, dann funktioniert es genauso Problemlos wie mein Testprogramm. Packe ich es wieder in die QMdiArea, dann passt es die Größe nicht mehr automatisch an. :-(

Hat hierzu noch jemand eine Idee? Gibt es vielleicht etwas in der MdiArea, dass das resizen verhindert/begrenzt und das ich vielleicht "abschalten" muss?

Danke!