[gelöst] Layout verändern bei Druck auf Button

Alles rund um die Programmierung mit Qt
Antworten
dani.80
Beiträge: 31
Registriert: 9. Mai 2005 14:52

[gelöst] Layout verändern bei Druck auf Button

Beitrag von dani.80 »

Hallo,
ich habe ein Widget dem insgesamt ein QVBoxLayout zugrundeliegt. Diesem werden mehrere QHBoxLayouts hinzugefügt (über ->addLayout).
Eines dieser QHBoxLayouts besteht aus mehreren Pushbuttons, die über addWidget dem QHBoxLayout hinzugefügt werden.
Nun habe ich einen Button, der zwischen verschiedenen Ansichten hin und herwechseln soll. Dabei soll sich jedesmal dieses eine QHBoxLayout ändern (und das restliche Layout soll gleich bleiben). Das heißt ich möchte jedesmal ein neues QHBoxLayout erzeugen, diesem wieder Buttons zuordnen und dafür das alte QHBoxLayout löschen, und das neue dem "Oberlayout" hinzufügen. Gibt es eine Möglichkeit, ein über addLayout hinzugefügtes Layout, wieder zu entfernen? Oder kann ich irgendwie machen: Lösche alle Wdgets aus dem QHBoxLayout und füge die neuen hinzu?

Danke
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Mit Layouts entfernen habe ich sehr schlechte Erfahrungen gemacht, versuche das über ein einziges Layout zu lösen, das du Buttons ein oder ausblendest. mit show und hide.
dani.80
Beiträge: 31
Registriert: 9. Mai 2005 14:52

Beitrag von dani.80 »

Ok, mal sehen. Es gibt aber dann nicht zufällig ne Methode um alle Buttons, die sich im Layout befinden erstmal auszublenden?
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Naja, höchstens die remove* Member von QLayout.
dani.80
Beiträge: 31
Registriert: 9. Mai 2005 14:52

Beitrag von dani.80 »

Könnte ich vielleicht das eine QHBoxLayout immer wieder überschreiben?
Im Moment erzeuge ich das LAyout immer mit
QHBoxLayout* hlayout=new QHBoxLayout();
und füge jedesmal die PushButtons hinzu.
Aber die "alten" Layouts werden so ja trotzdem beibehalten.
Könnte man das hlayout irgendwie überschreiben, ohne jedesmal ein neues mit new zu erzeugen?
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Mh, also keine Ahnung, aber wenn du items mit addWidget hinzufügst, kannst du die mit remove wieder entfernen. Und um das Problem zu lösen, das du später vielleicht nicht mehr weißt, welche Knöpfe enthalten sind einfach eine PtrList oder ähnliches verwenden und dann in einer for Schleife einfach item für item entfernen. Dann ist es leer und jetzt ist es in dem gleichen Zustand, wie wenn es neu wäre, oder?
dani.80
Beiträge: 31
Registriert: 9. Mai 2005 14:52

Beitrag von dani.80 »

Ok, habs jetzt mit einer QPtrList gemacht, und die Buttons immer zerstört, bevor ich die neuen Buttons dem Layout hinzugefügt habe =>
gelöst :)

Danke
Antworten