2017-10-18 1 views
0

Ich habe ein Raster-Layout, auf dem gibt es 4 Gruppenfelder. Wenn ich versuche, eine der QGroupBoxes mit groupBox->hide() zu verstecken, ist die Gruppenbox nicht mehr sichtbar. Aber der Raum im Layout beibehalten wird (ich bin nichtQSizePolicy mit dem Raum zu behalten)Entfernen Sie Platz beim Entfernen von QT-Widget

Wie kann ich sicherstellen, dass der Raum automatisch von den übrigen Widgets verwendet wird?

enter image description here

Im Bild habe ich 'Gruppe 2' versteckt. Ich möchte, dass Gruppe 3 den Speicherplatz automatisch ausfüllt. Wie mache ich das?

+0

Sie möchten, dass Gruppe 3 an die oberste Position verschoben wird, aber vorher gibt es 2 Fälle. Der erste besteht darin, die Größe des Widgets zu aktualisieren, und der zweite ist, ein Leerzeichen an der Stelle zu belassen. Welchen willst du? – eyllanesc

+0

@eyllanesc Ich möchte die Größe des Widget aktualisieren (ohne Platz zu lassen) – akashrajkn

+0

Haben Sie setAlignment (Qt :: AlignTop) verwendet; –

Antwort

0

Damit das Layout das macht, was Sie wollen, müssen sich die Kind-Widgets korrekt verhalten. I.e. Wenn eines Ihrer Gruppenfelder einen vertikalen Abstandhalter enthält, kann dies Ihr Layout beschädigen.

Ich fand, dass ein Stylesheet auf die Toplevel-Widget Einstellung mit Debug-Layout-Problemen hilft:

pWidget->setStyleSheet("border: 1px solid red;"); 

Dies um einen roten Rahmen malen wird (einige) Widgets und stellt klar, wer welchen Raum verwendet.

Sie könnten versuchen, einen vertikalen Abstandhalter unterhalb der dritten Gruppe hinzuzufügen, um sie alle nach oben zu schieben. Wenn eines der Gruppenfelder auf Unsichtbar gesetzt ist, sollten die anderen nach oben geschoben werden und der Abstand zwischen Gruppenfeld 1 und 3 sollte verschwinden.

Verwandte Themen