Seite 1 von 1

Rückstände nach löschen eines Items aus QGridLayout

Verfasst: 22. September 2009 02:31
von dead-raven
Hallo,

habe bei meinem Programm folgende Verschachtelung:


QStackedWidget
|__QHBoxLayout
......|__QScrollArea
............|__QGridLayout
..................|__QLabel


Das QLabel ist in QGridLayout an der Position (0, 0). Alle Objekte sind auf dem Heap abgelegt.

Wenn ich nun das QLabel aus dem QGridLayout entfernen möchte, so bleibt in der Anwendung dennoch ein Teil des Layouts bestehen (vgl. Anhang).

Code: Alles auswählen

gridLayout->removeItem(gridLayout->itemAtPosition(0, 0));
Woran könnte das liegen?

mfg
DeaD-RaveN

Verfasst: 22. September 2009 07:25
von upsala
'delete' mal das Item.

Verfasst: 22. September 2009 10:13
von dead-raven
mit delete funktionierts soweit.

Wenn ich das Objekt nun delete, QGridLayout aber nicht mitteile, dass das Objekt aus dem Layout entfernt werden soll, denkt dann QGridLayout immer noch, dass es ein child-Widget an (0, 0) hat?

Es bieten sich nämlich zwei Möglichkeiten an:

Code: Alles auswählen

// QGridLayout bekommt nicht bescheid gesagt:

delete gridLayout->itemAtPosition(0, 0)->widget();


//QGridLayout bekommt bescheid gesagt:

QLabel *tempLabel = static_cast<QLabel*>(gridLayout->itemAtPosition(0, 0)->widget());
gridLayout->removeItem(gridLayout->itemAtPosition(0, 0));
delete tempLabel;

Verfasst: 22. September 2009 12:19
von upsala
Wenn dein Layout 'denken' würde, daß da immer noch ein Widget wäre, würde es sich sehr höflich verabschieden.

Verfasst: 22. September 2009 17:41
von dead-raven
alles klar, vielen dank!

mfg
DeaD-RaveN

Verfasst: 23. September 2009 19:21
von dead-raven
Edit: Hat sich erledigt

mfg
DeaD-RaveN