Seite 1 von 1

QLayout durch anderes QLayout ersetzen

Verfasst: 11. Juli 2006 21:38
von michbex
Wie kann ich Widgets die in einem Layout liegen durch andere ersetzen? Um die Frage zu vereinfachen:

Wie lautet die QT4 - funktion um alle Widgets aus meinem Layout zu entfernen ohne das Layout entfernen zu muessen? In QT 3 war das ja "deleteAllItems()"... genau sowas brauche ich.

Danke

Michael

Verfasst: 12. Juli 2006 07:16
von macman

geloest: QStackedWidget

Verfasst: 17. Juli 2006 21:22
von michbex
Loesung:
QStackedWidget verwenden. Macht genau das.

Michael

Re: geloest: QStackedWidget

Verfasst: 18. Juli 2006 07:23
von macman
michbex hat geschrieben:QStackedWidget verwenden. Macht genau das.
Nein, macht es nicht. Ein QStackedWidget hält mehrere Layouts vor und zeigt nur eins an. Hast Du nicht auf der Seite geguckt, deren Link ich gepostet habe? Dort nach deleteAllItems suchen und man findet:
QLayout

In Qt 4, margins are always handled by layouts; there is no QLayout::setSupportsMargin() function anymore.

The deleteAllItems() function is now only available if QT3_SUPPORT is defined. If you maintain a QList of layout items, you can use qDeleteAll() to remove all the items in one go.
Das wäre das was Du gesucht hast, aber wenn Du mit einem QStackedWidget auch klar kommst, hast Du definitiv die falsche Frage gestellt :-).

Verfasst: 2. August 2006 23:39
von mikro
das klappt nicht, weil QWidgets nur QWidgets als Parent akzeptieren und somit keine QLayouts (die direkt von QObject abgeleitet sind).
setzt ein Frame auf das Layout und gib das als parent für deine Widgets. Dann klappt ein

Code: Alles auswählen

frame->hide();
qDeleteAll(frame->children());
delete frame->layout();
// und hier kannst Du dann dein neues Layout wieder als Layout für frame setzen
frame->show();