Seite 1 von 1

Widgets oder Layouts in einem QGridLayout ersetzen

Verfasst: 11. Juli 2006 16:59
von gehho
Hallo,

ich habe ein QGridLayout, in das ich weitere QGridLayouts einfüge, also verschachtelte QGridLayouts:

Code: Alles auswählen

QGridLayout *mainGrid = new QGridLayout( this );
QGridLayout *childGrid1 = new QGridLayout( mainGrid );
QGridLayout *childGrid2 = new QGridLayout( mainGrid );
QGridLayout *exchangeChildGrid3 = new QGridLayout( mainGrid );
mainGrid->addLayout( childGrid1, 0, 0 );
mainGrid->addLayout( childGrid2, 1, 0 );
Ich möchte nun ein Child-QGridLayout (childGrid1) in meinem Parent-QGridLayout (mainGrid) bei einer bestimmten Aktion (button::clicked()) durch ein neues QGridLayout ersetzen. Also im Prinzip einfach das childGrid1 entfernen und durch exchangeChildGrid3 ersetzen. Wenn ich allerdings removeItem() benutze, um das Grid zu entfernen, wird das Grid selbst zwar entfernt, aber der gesamte Inhalt des Grids (Buttons, Textfelder etc..) bleibt unverändert erhalten. Kann man das verhindern?
Außerdem: wenn ich das Grid entfernt habe (mit removeItem) und danach ein neues QGridLayout an der gleichen Stelle einfügen will (mit addLayout), sagt er mir, dass bereits ein Layout existiert...

Hat jemand eine Idee, wie man das einigermaßen elegant lösen kann?

Tausend Dank schon mal!
Gruß,
gehho

Verfasst: 11. Juli 2006 18:43
von upsala
Hmm, ich geh jetzt mal von Qt4 aus: Also dein Code kann schon mal nicht funktionieren. Es gibt kein QGridLayout(QLayout *).
Und ja, es stimmt, wenn du ein Layout entfernst bleiben die Widgets auf ihren absoluten Positionen. Willst du sie auch entfernen lassen, mußt du eine andere Möglichkeit nutzen.
Ansonsten schau dir mal die Fehlermeldungen richtig an, dann wirst du sehen, warum du dein Layout nicht ersetzen kannst...

Verfasst: 11. Juli 2006 19:11
von gehho
danke für deine antwort!
upsala hat geschrieben:Hmm, ich geh jetzt mal von Qt4 aus:
ne, sorry, hab ich vergessen zu sagen. verwende Qt3.3.
upsala hat geschrieben:Also dein Code kann schon mal nicht funktionieren. Es gibt kein QGridLayout(QLayout *).
ja, das war nur schnell hier ins textfeld getippt. in meinem code sieht es etwas anders aus. das war nur als idee gedacht..
upsala hat geschrieben:Und ja, es stimmt, wenn du ein Layout entfernst bleiben die Widgets auf ihren absoluten Positionen. Willst du sie auch entfernen lassen, mußt du eine andere Möglichkeit nutzen.
und welche andere möglichkeit wäre das? muss ich mir wirklich alle widgets speichern und dann mit delete entfernen? aber selbst wenn ich dann alle widgets entfernt haben sollte, meckert er glaube ich immer noch, dass dieser bereich schon ein layout hat und ich kein neues hinzufügen kann...