Servus allerseits Wenn es auch mit der QT-Kodierung sehr gut vorangeht: mit dem QT-Designer kann ich mich einfach nicht anfreunden. Weiss gar nicht was ich dazu schon alles gelesen und mir auf Youtube alles angeschaut habe. Zuletzt hatte ich auf Youtube "Qt DevDays 2011" in Sachen Widgets and Layouts gefunden. Und dachte mir: das is' es! War's aber auch nicht. Mein Problem: um zum Layout im Bild 2 (scr_2.jpg) zu gelangen (also alle LineEdits linksbündig), muss ich zuerst einen Zwischenschritt einlegen und diese Widgets in ein Vertikal-Layout setzen. Dadurch wird aber die Breite aller Widgets gleichgesetzt. Im 2. Schritte, führe ich ein Break-Layout aus, um dann die Weiten aller Felder manuell wieder anzupassen. Ich haette mir gedacht, ich könnte sizePolicy auf horizontal fixed stellen, um die Werte nicht mehr neu einstellen zu müssen. Geht aber nicht: diese Policy wird vom Vertical-Layout nicht beachtet. Kann mir aber irgendwie nicht vorstellen, dass ein ansonsten so gut durchdachtes Konzept nur eine solche 2. schrittige Lösung bereithaelt. Waere nett, wenn mir jemand unter die Arme greifen könnte.
Mehmet Kendi schrieb: > Mein Problem: um zum Layout im Bild 2 (scr_2.jpg) zu gelangen (also alle > LineEdits linksbündig), muss ich zuerst einen Zwischenschritt einlegen > und diese Widgets in ein Vertikal-Layout setzen. Dadurch wird aber die > Breite aller Widgets gleichgesetzt. Ich seh jetzt noch nicht, was daran so schlimm ist, wenn die gleich lang sind. So passen sich die Dinger wenigstens automatisch an, wenn der Benutzer den Dialog in die Breite zieht. Ich kenne allerdings eine Menge Programme, bei denen der Designer nicht mitgedacht hat, und man Texteingaben in dafür viel zu kleine Felder machen muss und man daher vom Text immer nur 20% sieht.
Dein Bedenken ist zwar richtig, aber meine Dialoge setze ich stets auf
1 | this->setFixedSize(this->width(), this->height()); |
weshalb das von Dir vorgebrachte Problem bei mir nicht eintrifft.
Mehmet Kendi schrieb: > Mein Problem: um zum Layout im Bild 2 (scr_2.jpg) zu gelangen (also alle > LineEdits linksbündig), muss ich zuerst einen Zwischenschritt einlegen > und diese Widgets in ein Vertikal-Layout setzen. Dadurch wird aber die > Breite aller Widgets gleichgesetzt. Ob ein Widget im Layout linksbündig ist, kann man ja für jedes Widget getrennt einstellen. Aber das ist vermutlich nicht dein Problem, sondern eher, daß die Sizepolicy der Labels links dafür sorgt, daß die immer den restlichen verfügbaren Platz ausfüllen. Du mußt halt rechts noch einen Spacer reinmachen, damit der den Platz ausfüllt, dann sieht das so aus wie im Anhang. Mehmet Kendi schrieb: > Dein Bedenken ist zwar richtig, aber meine Dialoge setze ich stets > aufthis->setFixedSize(this->width(), this->height()); > weshalb das von Dir vorgebrachte Problem bei mir nicht eintrifft. Das ist ja noch viel schlimmer! Dialoge, deren Größe sich nicht ändern läßt, sind die Pest. Da hat Qt so ein schönes Layout-System, bei dem sich alles anpassen kann, und dann werden irgendwelche Größen auf einen fixen Wert gezwungen. Mehmet Kendi schrieb: > Ich haette mir gedacht, ich könnte sizePolicy auf horizontal fixed > stellen, um die Werte nicht mehr neu einstellen zu müssen. > Geht aber nicht: diese Policy wird vom Vertical-Layout nicht beachtet. Also bei mir funktioniert es, wenn ich die SizePolicy auf fixed setze, und zwar unabhängig davon, ob das jetzt direkt in einem Grid-Layout oder noch einem separaten Verical-Layout mache.
Rolf Magnus schrieb: > Da hat Qt so ein schönes Layout-System, bei dem sich alles anpassen > kann, und dann werden irgendwelche Größen auf einen fixen Wert > gezwungen. was einen dann ab und an schon mal zwingt, die Monitor-Auflösung kurzerhand wieder runterschrauben zu müssen, damit man was lesen kann. Das heißt, wenn dann der Dialoginhalt überhaupt noch ins Dialogfenster passt. Altes Leiden: Ein GUI-Designer stellt alles so ein, dass es auf seinem Schirm gut aussieht. Dass es auch andere Bildschirmauflösungen oder gar, Gott bewahre, andere Schriftgrößen gibt, interessiert ihn nicht. > Das ist ja noch viel schlimmer! Dialoge, deren Größe sich nicht ändern > läßt, sind die Pest. Und noch 'pestiger' sind die, die sich Größe und Position von einem Programmlauf zum nächsten nicht merken können. Genauso wie die, die sich die einmal mühsam eingestellte Spaltenaufteilung in einer Listbox nicht merken oder den Pfad, auf dem man zuletzt gespeichert hat, etc. etc. Ich hau bei Qt einfach Spacer rein. Obwohl ich bei älteren Qt Versionen mit dem Designer auch schon oft am kämpfen war, haben wir beide (der Designer und ich) immer noch einen Kompromiss gefunden :-)
:
Bearbeitet durch User
Karl Heinz schrieb: >> Das ist ja noch viel schlimmer! Dialoge, deren Größe sich nicht ändern >> läßt, sind die Pest. > > Und noch 'pestiger' sind die, die sich Größe und Position von einem > Programmlauf zum nächsten nicht merken können. Ja, wobei man bei der Position aufpassen muß. Ich hatte auch schon Programme, die sich die gemerkt haben, aber leider war die auf dem am Laptop angeschlossenen externen Monitor, der als Zweitbildschirm dran war. Unterwegs kommt man dann mangels Zweitmonitor auf einmal nicht mehr an das Fenster ran. > Genauso wie die, die sich die einmal mühsam eingestellte > Spaltenaufteilung in einer Listbox nicht merken oder den Pfad, auf dem > man zuletzt gespeichert hat, etc. etc. Ja, richtig. Das läßt sich bei Qt ja mit QSettings sehr schön einfach und elegant machen.
Wegen meinem Layout hatte ich bis anhin noch nie irgendwelche Reklamationen. Ohne fixes Layout arbeite ich nur bei Reports. Werde aber das von Euch Reklamierte mal im Hinterkopf behalten und auf mich einwirken lassen. @Magnus In Deinem Beispiel sind die Labels alle gleich breit. Sitzt es deshalb wie angegossen? Mit Spacer arbeite ich. Aber in diesem Fall brachten sie keine Lösung. Kannst Du bitte mir step-by-step sagen, wie ich vorgehen muss? Was ich gemacht habe: - alle Widgets placiert (scr_1.png) - alle Lables auf AlignRight gesetzt + Vertical-Layout (scr_2.png) - alle LineEdits: SizePolicy auf HorizontalPolicy-Fixed gesetzt. Okay, was sind nun meine naechsten Schritte?
Hopala, was sind denn das für Bilder? Versuche die Bilder nochmals hochzuladen.
Der Spacer muss schon mit ins Layout, sonst hat der freilich keinen Effekt. Also für jede Zeile Label, LineEdit und Spacer in eine HBoxLayout und dann alle HBoxLayouts in ein VBoxLayout. Oder aber alle Labels und LineEdits in ein FormLayout und dieses dann mit dem Spacer in ein HBoxLayout. Mehmet Kendi schrieb: > Wegen meinem Layout hatte ich bis anhin noch nie irgendwelche > Reklamationen. Die meisten Leute sind es eben gewohnt, mit schlecht designten GUIs zu arbeiten ;-)
Mehmet Kendi schrieb: > In Deinem Beispiel sind die Labels alle gleich breit. Sitzt es deshalb > wie angegossen? Geht auch mit unterschiedlich langen Labels. Siehe Bild. > - alle Widgets placiert (scr_1.png) > - alle Lables auf AlignRight gesetzt + Vertical-Layout (scr_2.png) Wieso denn? Mach die doch mit den LineEdits zusammen in ein GridLayout. > - alle LineEdits: SizePolicy auf HorizontalPolicy-Fixed gesetzt. > > Okay, was sind nun meine naechsten Schritte? - Ein GridLayout drum - Einen Spacer in eine eigene Spalte dieses Layouts stecken Ich hänge mal mein Beispiel-ui-File mit an, aber ich weiß nicht, ob du das mit deinem Designer öffnen kannst, wenn du eine andere Version hast.
Sorry für das Schweigen. Der Blutdurck war plötlich im Keller und ich im Bett.
Servus Magnus. Danke für dein Beispiel! Hat bei mir sofort ein Aha-Erlebnis ausgelöst! Jetzt habe nur noch ein Problem: Wie kriege ich die Labels rechtsbündig? Wie ich Deinem Beispiel entnehme, hast Du an deren Alignments nichts geaendert. Bei mir ist alles linksbündig: scr_1.png
Rolf Magnus schrieb: > Dialoge, deren Größe sich nicht ändern läßt, sind die Pest. Philip K. schrieb: > Die meisten Leute sind es eben gewohnt, mit schlecht designten GUIs zu > arbeiten ;-) Karl Heinz schrieb: > Und noch 'pestiger' sind die, ... Ich mach mal dafür einen neuen Beitrag auf.
Mehmet Kendi schrieb: > Wie kriege ich die Labels rechtsbündig? Du stellst sie im Layout auf rechtsbündig. Rechtsklick auf das Widget -> "Ausrichtung des Layouts" -> Rechts.
Geil!! Jetzt hat's endlich geklappt. Und auch im Nachhinein, wo jetzt alles klar ist, muss ich eignestehen: alleine haette ich es nicht geschafft. Nochmals vielen Dank!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.