Details
-
Suggestion
-
Resolution: Unresolved
-
P3: Somewhat important
-
None
-
4.8.3, 5.3.1
-
None
Description
Though QLayout, it is really handy if there is a function removing (& also deleting) all child items (which can be either layout itself or widget) managed by a QLayout, like this:
void clearLayoutWidgets(QLayout* layout) // Not delete the layout itself! { if ((layout == nullptr) || (layout->isEmpty())) return; // !Note: QLayout inherits QLayoutItem QLayoutItem *item; while(item = layout->takeAt(0)) { // If item has sub-layouts: if (item->layout()) { clearLayoutWidgets(item->layout()); // Not delete the layout itself! delete item->layout(); // Delete outside if need! } // If item is a widget itself: else if (item->widget()) { delete item->widget(); //OR layout->removeWidget(item->widget()) // item was already taken out of layout } // If item is just a pure empty layout: else { // bool test = item->isEmpty(); } // In any case: delete item itself! delete item; } }