Wie kann ich layout_newInfo von layout_main in Runtime gegeben entfernen layout_newInfo layout_main verschachtelt ist?
Die semantisch klarere Methode:
layout_main->removeItem(layout_newInfo); // make sure layout_newInfo object deleted
// after either by parent or somehow else
BTW, in der Regel sollte dies auch tun, das gleiche von verschachtelten Layout zu entfernen:
delete layout_newInfo; // also removes it from upper layout
layout_main->update(); // triggers update on the screen
Also, nur zwei unteren Zeilen des Codes Beispiel sollte ausreichend sein, wobei layout_main->update()
Aufruf nur manchmal benötigt wird, wenn kein anderes Update ausgelöst wird.
Das Beispiel von here zeigt, dass das Löschen von QLayoutItem
, das übergeordnete für QLayout
ist, es auch aus der oberen Layoutstruktur entfernt (sein Destruktor tut es).
Zeigt den Code, den Sie ausprobiert haben. – eyllanesc
Code zu Qestien hinzugefügt. –
Beachten Sie, dass der Aufruf 'layout-> removeItem (item);' in der 'while'-Schleife nichts tut, da das übergebene 'item' bereits durch den Aufruf von [' QLayout :: takeAt'] entfernt wurde (http: // doc.qt.io/qt-5/qlayout.html # takeAt). –