Seite 1 von 1

Layout neu ausrichten bei Widget.setHidden()

Verfasst: 20. Juni 2006 22:22
von d.albuschat
Hallo,

ich habe im Designer ein Form mit Grid Layout erstellt, in dem ich in
der erste Zeile Checkboxen habe und in der zweiten andere Widgets (Time Edits).
Unter und über dem Grid sind weitere Widgets. Das sieht ungefähr so aus:
.------------------------.
| Widget | Widget |
| Checkbox | Checkbox |
| Date Edit | Date Edit |
| Widget | Widget |
`------------------------´
(stellt euch das Ganze jetzt in einer Festbreitenschrift vor.)
Ich möchte nun die Zeile mit den Date Edits ausblenden können. Und zwar so, dass dann das gesamte Form kleiner wird. Momentan strecken sich die restlichen Widgets dann über den frei bleibenden Platz, das sieht aber unschön aus.

Ich weiß nicht, wie ich dem Form (das ich später per setupUi() auf einen QDialog projeziere) sage, dass es immer so klein wie möglich sein soll.

Danke schonmal für eure Hilfe.

MfG,
Daniel Albuschat

Verfasst: 21. Juni 2006 07:19
von macman
Dann passt was mit den Layouts nicht. Ich habe einen ähnlichen Dialog, der sich auch in der Größe anpasst, je nach dem was eingeblendet ist und was nicht. Mit deinen wenigen Angaben kann man nicht sagen, was Du anders gemacht hast. Also, Bild vom Designer oder Code vom ui.

Verfasst: 21. Juni 2006 17:57
von d.albuschat
Ok, ich habe einen Testcase erstellt.
Siehe Anhang ans Posting.
Die Datei kann im Designer geöffnet werden und das fehlerhafte
Resultat sieht man schon, wenn man Strg+R drückt (Vorschau)
und dann auf die Checkbox klickt.

Verfasst: 22. Juni 2006 07:51
von macman
Ich bin etwas ratlos, bekomme es nicht hin. Ich habe einen Dialog, bei dem werden Teile vor dem show() ausgeblendet und dann ist er größer oder kleiner, je nach dem was sichtbar ist. Ich habe auch mehrere Dialoge, die ihre Größe dynamisch ändern, wenn ich z.B. während der Laufzeit die Sprache umschalte und sich dadurch Textlängen ändern. Frag mich nicht was da anders ist :-)

Verfasst: 22. Juni 2006 10:02
von upsala
Die eine Möglichkeit wäre mit Spacern zu arbeiten, dann kann man die Position festlegen, an denen die Elemente verschoben werden.

Die andere Möglichkeit wäre einen Slot aufzurufen, der folgendes macht:

Code: Alles auswählen

resize(sizeHint())
(ungetestet)

Verfasst: 22. Juni 2006 12:05
von macman
upsala hat geschrieben:

Code: Alles auswählen

resize(sizeHint())
Sowas habe ich zu Qt3-Zeiten mal gemacht, damit ein Dialog so klein wie möglich wurde, aber mit Qt4 funktioniert es so nicht. Genauer, beim ersten Klick wurde nur die Breite angepasst, beim zweiten Klick war das Label ja wieder da :-) Hab es nicht weiter verfolgt.