Positionen von Widgets aufeinander abstimmen

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
vorlautboy
User
Beiträge: 38
Registriert: Sonntag 7. Dezember 2008, 18:43

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?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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
vorlautboy
User
Beiträge: 38
Registriert: Sonntag 7. Dezember 2008, 18:43

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!
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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.
vorlautboy
User
Beiträge: 38
Registriert: Sonntag 7. Dezember 2008, 18:43

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.
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.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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.
Antworten