[qt4] Fenstergröße automatisch anpassen?

Alles rund um die Programmierung mit Qt
Antworten
BeS
Beiträge: 28
Registriert: 10. Januar 2005 15:01

[qt4] Fenstergröße automatisch anpassen?

Beitrag 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!
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

Code: Alles auswählen

adjustSize()
schon probiert?
BeS
Beiträge: 28
Registriert: 10. Januar 2005 15:01

Beitrag 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. :(
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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().
BeS
Beiträge: 28
Registriert: 10. Januar 2005 15:01

Beitrag 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!
Antworten