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
QLayout durch anderes QLayout ersetzen
geloest: QStackedWidget
Loesung:
QStackedWidget verwenden. Macht genau das.
Michael
QStackedWidget verwenden. Macht genau das.
Michael
Re: geloest: QStackedWidget
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:michbex hat geschrieben:QStackedWidget verwenden. Macht genau das.
Das wäre das was Du gesucht hast, aber wenn Du mit einem QStackedWidget auch klar kommst, hast Du definitiv die falsche Frage gestelltQLayout
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 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
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();