QT Layout ausrichten
-
Hallo,
ich habe folgendes Problem. Ich habe 2 Groupboxes. In der einen sind verschiedene Elemetnte (Button Label etc) diese Sollen einen Block bilden. Die 2. Groupbox ist darüber. In ihr sind auch mehrere Buttons, diese sind fest angeordnet.
Nun möchte ich diese Gruppe aus der ersten Groupbox über den Code bewegen. Mal soll diese Gruppe von Buttons und Labeln in der GroupBox1 zentriert unter Button1 aus Groupbox2 stehen, mal unter Button2 aus Groupbox2. Wie kann man das am besten lösen?
Es soll mal so ausgerichtet sein:
Box2 |-----------------------------------------| | | | | | | | Button1 Button2 | | | | | |-----------------------------------------| Box1 |-----------------------------------------| | | |Label Button Label | | Button Label | | | | | | | |-----------------------------------------|
und mal so:
Box2 |-----------------------------------------| | | | | | | | Button1 Button2 | | | | | |-----------------------------------------| Box1 |-----------------------------------------| | | | Label Button Label | | Button Label | | | | | | | |-----------------------------------------|
-
Also ich würd in der box1 eher 2 widgetgruppen anlegen. Also eine gruppe für button1 und eine gruppe für button2. Dann würde ich ein neues layoutitem erstellen (erbt am besten von QWidgetItem), wo die methode "isEmpty" immer false zurückliefert. Dann legst du 2 dieser layoutitems an, packst jeweils eine widgetgruppe in ein item und fügst die beiden items per horizontallayout in box1. Der vorteil dieser methode ist, dass sich die beiden gruppen in box1 dann wirklich immer gleichmäßig 50/50 über box1 verteilen. Du musst nur die einzelnen elemente immer visible bzw. nicht visible setzen. Die elemente der beiden gruppen noch geschickt über signals ansprechen, und das wars.
Alternativ könntest du die widgetgruppe in box1 in ein layout packen. Dann in box1 links und rechts der widgetgruppe einen QSpacer einfügen und über die grösse des spacer die position bestimmen. Find ich aber eher ungünstig, da bei einer veränderung der grösse des ganzen fensters dann natürlich die grösse des spacers neu berechnet werden muss.
Willst du die widgetgruppe aber immer komplett links oder komplett rechts haben, dann wäre der spacer die schnellste und auch sinnvollste lösung.