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?
Positionen von Widgets aufeinander abstimmen
- 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
Fuer ein Formular gibts auch noch das dafuer gedachte QFormLayout
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
-
- User
- Beiträge: 38
- Registriert: Sonntag 7. Dezember 2008, 18:43
ok, dann is hier der link zum bild.cofi hat geschrieben:Ein Bild sagt mehr als tausend Worte.
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!
- 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.
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.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
-
- User
- Beiträge: 38
- Registriert: Sonntag 7. Dezember 2008, 18:43
Besten Dank für deine Hilfe cofi!
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.
Ich werd mir gleich mal die doku dazu ansehen!cofi hat geschrieben:Der andere Vorschlag ist ``QFormLayout``, das kann das naemlich ganz alleine.
ob die schrift links oder rechts ausgerichtet ist, ist für mich zweitrangig, ich werds aber dennoch mal ausprobieren.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.
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.
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.
- 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.

Ich schliesse mich da lunar an: Die Luecken machen die 2. Version weit schlechter zu benutzen, als die erste es je sein koennte.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte