Vertut sich QFormLayout um ein paar Pixel?

Verschiedenes zu Qt
Antworten

Liegt QFormLayout hier um ein paar Pixel daneben?

Ja, ich seh's. Wie blöd.
2
50%
Ach, Quatsch!
1
25%
Ja, aber: Hast du nichts besseres zu tun??!
1
25%
 
Insgesamt abgegebene Stimmen: 4

sieben
Beiträge: 10
Registriert: 18. Juni 2009 08:45

Vertut sich QFormLayout um ein paar Pixel?

Beitrag von sieben »

Hallo!

Ich versuche (eigentlich dynamisch) ein paar (Zahlen-)Einstellungen eines Objekts editierbar zu machen. Dazu verwende ich einen Dialog, in dem ein QFormLayout mit mehreren Labels und QSpinBox'es vorkommt.

Während es programmtechnisch ganz gut funktioniert, kann ich mir nicht helfen: Irgendetwas sieht komisch aus. Und zwar scheint das QLabel ein paar Pixel zu hoch angesetzt zu sein.

Ich habe das jetzt im Designer nachgestellt und da passiert das Gleiche... Bei dem QLineEdit ist es nicht ganz so offensichtlich.

===> siehe Anhang

Alle Einstellungen sind Standard, d.h. es sollte eigentlich fein vertikal zentriert werden...

Muss das so aussehen? Ist das ein Fehler? Bin ich zu pingelig?
Was kann man tun?

Benutze Ubuntu/GNOME.

Vielen Dank im Voraus für Meinungen, Klärungen, Vorschläge oder andere hilfreiche Kommentare.

edit:
Habe jetzt mal alle Styles durchprobiert, die ich bei mir finde, und mit einigen passiert dies nicht und es sieht schön zentriert aus, nämlich qtCurve und qtc_klearlooks. Beim Motif-Style allerdings fällt es noch viel deutlicher auf...
Dateianhänge
QLabel ein paar Pixel zu hoch im QFormLayout? - Ubtuntu/GNOME
QLabel ein paar Pixel zu hoch im QFormLayout? - Ubtuntu/GNOME
formlayout.gif (11.55 KiB) 5063 mal betrachtet
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Exasperation
Beiträge: 186
Registriert: 11. März 2009 18:00
Wohnort: VS

Beitrag von Exasperation »

Siehe Link von franzf... Dein Label wird standardmäßig oben links in dem ihm vorgegebenen Raum platziert... Da das Label ne kleinere Höhe hat, als die Spinbox, sitzt das Label folglich etwas höher ;) Alignment anpassen und die Sache passt :P
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Ach, lass ihn das doch selber rausfinden. So lernt er das Dokulesen doch nie ;)
sieben
Beiträge: 10
Registriert: 18. Juni 2009 08:45

Beitrag von sieben »

Diese Einstellung bezieht sich auf die Ausrichtung ALLER Widgets innerhalb des Layouts.
Wenn ich das auf "vertikal-zentriert" stelle, ändert sich der Dialog nur insofern, als dass sich dann das im Einzelnen Falsche insgesamt in der Mitte befindet.
Ach, lass ihn das doch selber rausfinden. So lernt er das Dokulesen doch nie :wink:
Na, da scheine ich mich ja in diesem Fall schon ein wenig besser auszukennen...
Ich habe erst hier gefragt, als ich die Doku mir nicht weiter geholfen hat.
Ich lese im Übrigen die Doku die ganze Zeit.
Mir zu unterstellen, das ich das nicht täte, finde ich unfreundlich, arrogant und wenig hilfreich. Aber egal.

Hat jemand andere Vorschläge?
Könnte es vielleicht sein, dass es in 4.6 behoben ist? Ich habe nämlich nur 4.5.2, weil das die Version ist, die gerade über das Paketsystem bei Ubuntu kommt... Wie gesagt, bei einigen (wohl eher KDE-mäßigen?) Styles passt alles perfekt...
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Im übrigen hat das QGridLayout das selbe Verhalten.
Exasperation
Beiträge: 186
Registriert: 11. März 2009 18:00
Wohnort: VS

Beitrag von Exasperation »

Ich vermute mal so wie in meinem Anhang möchtest du es haben...

Stichwort ist QGridLayout, da passt alles...

Im Übrigen würde ich uns nicht als arrogant, unfreundlich und wenig hilfreich bezeichnen... wir hätten in unserer unbarmherzigen Arroganz auch deinen Beitrag ignorieren können, aber haben vorsichtshalber Mal auf die Doku verwiesen, was du uns auch noch übel genommen hast ;)

Es gibt genug Amateure die es nicht schaffen auch nicht die einfachsten Dinge nachzuschlagen...

Hey aber das seltsame Verhalten von QFormLayout war mir auch nicht bekannt ;) Wie gesagt, bei QGridLayout passt es ;)
Dateianhänge
QGridLayout
QGridLayout
Bild.png (8.21 KiB) 4999 mal betrachtet
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Ich weiß nicht wie du darauf kommst, dass bei einem QFormLayout die labels vertikal zentriert sind, das steht nirgendwo in der Doku! Die sind immer top! Daraus ergibt sich, dass das Problem nicht an Qt sondern am Style liegt, der für label/lineedit/combobox/... unterschiedliche Höhen setzt.
Mit etwas mehr Experimentierfreude hättest du mal was richtig fettes als Widget reingebaut, z.B. ein QDial. Da wird es klar und deutlich ersichtlich.

Desweiteren habe ich leider den falschen Link gepostet. Das sollte natürlich nicht formAlignment werden sondern labelAlignment. Deshalb auch der ironische (nicht arrogante!) Kommentar. Mit Doku lesen hättest du nämlich das hier erkannt:
labelAlignment : Qt::Alignment
This property holds the horizontal alignment of the labels.
Das Einstellen eines vertikalen Alignment ist also deaktiviert. Jeder Versuch über die Methoden von QLayout scheitert (QLayout::setAlignment(alignment), QLayout::setAlignment(QWidget*, alignment)).

Im übrigen ist eine Umfrage nicht das probate Mittel, um eine Lösung für ein Problem herbeizuführen. Das wirkt leider recht noobisch (auch etwas arrogant - sry...). Zusammen mit den fehlenden Infos (was hast du bereits versucht, welche Properties hast du angefasst, usw.) eröffnete sich mir das Bild eines Anfängers, der einfach noch nicht in die Doku geschaut hat. Das ist hier leider an der Tagesordnung.
sieben
Beiträge: 10
Registriert: 18. Juni 2009 08:45

Beitrag von sieben »

Also ich habe jetzt QGridLayout benutzt. Vielen Dank für die kompetente Hilfe!

Sorry, das mit der Umfrage war nur ein Spaß.

Und ich bin ein Amateur, nur eben einer, der immer brav die Doku liest. :wink:
Und die ist wirklich richtig, richtig gut - hatte bisher auch kaum Probleme...

Allerdings ist das Verhalten von QFormLayout dann tatsächlich ein bisschen merkwürdig... Ein "Formular" sähe m. E. doch deutlich besser aus, wenn die Label und anderen Widgets gegeneinander zentriert würden... Egal!

Nochmals dankeschön!
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

sieben hat geschrieben:Ein "Formular" sähe m. E. doch deutlich besser aus, wenn die Label und anderen Widgets gegeneinander zentriert würden...
Für primitive Formulare, die nur ein QLineEdit oder ne Combobox haben vllt. schon.
Zum Beispiel sollen verschieden Datensätze zum Editieren angeboten werden. U.A. existieren für Adresse, berufliche Stationen usw. schon fertige Widgets (unser FormLayout soll die alle auf einer Seite darstellen.).
Wenn da alle Zeilen vertikal zentriert wären, gäbe das ein ziemlich unübersichtliches Bild, es wäre ziemlich unbenutzbar. Von Haus aus also vertikal zentrieren ist nicht.
Ist aber sicher kein Grund das vertikale Alignment komplett zu deaktivieren. ->BugReport?

Wie dem auch sei, du kannst dir selber Code dafür schreiben. Kapsel das Hinzufügen in einer eigenen Methode. hol dir die Höhe des Labels und des Widgets, nimm die Differenz und pass den Margin des Labels an ;) Wird aber deutlich mehr Code als nur mit QGridLayout :D
Antworten