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

Alles rund um die Programmierung mit Qt
Antworten
dead-raven
Beiträge: 23
Registriert: 18. Dezember 2008 23:20

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

Beitrag 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
Dateianhänge
Vor dem löschen von QLabel
Vor dem löschen von QLabel
alt.PNG (5.56 KiB) 2896 mal betrachtet
Nach dem löschen von QLabel
Nach dem löschen von QLabel
neu.PNG (4.43 KiB) 2896 mal betrachtet
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

'delete' mal das Item.
dead-raven
Beiträge: 23
Registriert: 18. Dezember 2008 23:20

Beitrag 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;
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Wenn dein Layout 'denken' würde, daß da immer noch ein Widget wäre, würde es sich sehr höflich verabschieden.
dead-raven
Beiträge: 23
Registriert: 18. Dezember 2008 23:20

Beitrag von dead-raven »

alles klar, vielen dank!

mfg
DeaD-RaveN
dead-raven
Beiträge: 23
Registriert: 18. Dezember 2008 23:20

Beitrag von dead-raven »

Edit: Hat sich erledigt

mfg
DeaD-RaveN
Antworten