Seite 1 von 1

Positionen von Widgets aufeinander abstimmen

Verfasst: Sonntag 9. August 2009, 13:28
von vorlautboy
Hallo Leute,

ich habe einen dialog erstellt, der dinge wie name, telefonnummer, email etc. abfragt. um ihn einerseits übersichtlicher zu gestalten und andererseits die eingaben logisch zu gliedern, habe ich ähnliche eingabefelder in groupboxes zusammengefasst. so beihaltet die groupbox "kontakt" bspw. telefonnummer, mobilfunknummer und email. innerhalb jeder groupbox sind die widgets tabellarisch angeordnet (grid), also labels nebst eingabefeldern (lineedits). das problem ist jetzt, dass die labels unterschiedlich lang sind und daher die position, an der das anschließende lineedit beginnt, in jeder groupbox eine andere ist. das sieht relativ doof aus und stellt mich - zusammen mit meiner alternative (10 labels nebst lineedits ohne container übereinandergestapelt) - bestenfalls vor die wahl der qual.
jetzt also meine frage: wie kann ich die positionen der widgets in den groupboxes (oder containern allgemein) aufeinander abstimmen? ist das mit den 3 vorgefertigten layouts überhaupt möglich?
oder würdet ihr ein ganz anderes design vorschlagen?

Verfasst: Sonntag 9. August 2009, 13:57
von cofi
Ein Bild sagt mehr als tausend Worte. In dem Fall wuerde aber auch die UI Datei reichen.

Fuer ein Formular gibts auch noch das dafuer gedachte QFormLayout

Verfasst: Sonntag 9. August 2009, 14:36
von vorlautboy
cofi hat geschrieben:Ein Bild sagt mehr als tausend Worte.
ok, dann is hier der link zum bild.

ich habe das problem übrigens - obschon nicht elegant gelöst - so doch in den griff bekommen, und zwar so: nachdem die labels/edits im container/layout sind, sucht man das breiteste label raus und überträgt dessen breite als minimumSize jeweils auf das erste label aller anderen groupboxes. das resultat sieht dann so aus.

falls jemand einen anderen vorschlag hat, bitte posten!

Verfasst: Sonntag 9. August 2009, 14:40
von cofi
Der andere Vorschlag ist ``QFormLayout``, das kann das naemlich ganz alleine.
Wenn dir das Alignment der Labels auf den Bildern dort nicht gefaellt, das kann man aendern - allerdings finde ich "right-aligned" weit angenehmer zu benutzen.

Verfasst: Sonntag 9. August 2009, 15:32
von vorlautboy
Besten Dank für deine Hilfe cofi!
cofi hat geschrieben:Der andere Vorschlag ist ``QFormLayout``, das kann das naemlich ganz alleine.
Ich werd mir gleich mal die doku dazu ansehen!
Wenn dir das Alignment der Labels auf den Bildern dort nicht gefaellt, das kann man aendern - allerdings finde ich "right-aligned" weit angenehmer zu benutzen.
ob die schrift links oder rechts ausgerichtet ist, ist für mich zweitrangig, ich werds aber dennoch mal ausprobieren.

Edit: ich weiß nicht ob ich dich richtig verstanden habe. ich suche ein layout, das dafür sorgt, dass alle lineedits (alle lineedits auf dem dialog, nicht auf dem container) denselben x-wert haben. bisher habe ich dazu ein gridlayout für jede groupbox verwendet und die labels wie beschrieben angepasst. widgets aus verschiedenen containern lassen sich aber nicht gemeinsam in einem layout zusammenfassen.

Verfasst: Sonntag 9. August 2009, 18:35
von lunar
Ich würde das Aussehen unverändert lassen. Die unterschiedliche Ausrichtung der Eingabefelder über verschiedene Gruppen hinweg stört meiner Meinung nach nicht, da der Rahmen und die Beschriftung der QGroupBox der Einheitlichkeit in vertikaler Linie eh entgegen stehen. Zudem lesen Menschen in unseren Breiten von links nach rechts, vertikale Diskrepanzen wirken sich da nicht störend aus. Viel störender sind doch da die großen grauen Lücke zwischen Beschreibung und Eingabefeld in deinem zweiten Beispiel.

Verfasst: Sonntag 9. August 2009, 19:26
von cofi
Entschuldige, ich hab dich etwas missverstanden, allerdings gibt es fuer dein "Problem" keine vorgefertigte Loesung, das sollte in dem Fall schon zu denken geben ;) Eine Moeglichkeit waere, dass du von den Groupboxen Abstand nimmst und stattdessen normale Labels nimmst, allerdings machst du es dir selbst schwer, Groupboxen sollten optisch nur in sich konsistent sein.

Ich schliesse mich da lunar an: Die Luecken machen die 2. Version weit schlechter zu benutzen, als die erste es je sein koennte.