Как я могу удалить layout_newInfo из layout_main во время выполнения с учетом layout_newInfo вложен в layout_main?
семантически понятнее метод:
layout_main->removeItem(layout_newInfo); // make sure layout_newInfo object deleted
// after either by parent or somehow else
BTW, как правило, это также должно сделать то же самое удаление вложенного макета:
delete layout_newInfo; // also removes it from upper layout
layout_main->update(); // triggers update on the screen
Таким образом, всего в 2 нижних строках вашего примера кода должны достаточно, если layout_main->update()
вызов требуется только иногда, если другое обновление не было вызвано.
Пример из here показывает, что удаление QLayoutItem
который является родителем для QLayout
ли удалить его из верхней структуры макета, а также (его деструктор делает это).
Показывает код, который вы пробовали. – eyllanesc
Добавлен код для Qestien. –
Обратите внимание, что вызов 'layout-> removeItem (item);' в цикле 'while' ничего не делает, поскольку переданный' item' уже был удален вызовом ['QLayout :: takeAt'] (http: // doc.qt.io/qt-5/qlayout.html#takeAt). –