diff --git a/src/app/panels/DynamicFormView.cpp b/src/app/panels/DynamicFormView.cpp index b2dd154..a4e6c5a 100644 --- a/src/app/panels/DynamicFormView.cpp +++ b/src/app/panels/DynamicFormView.cpp @@ -111,15 +111,15 @@ void DynamicFormView::clear() while (cardLayout_->count() > 0) { QLayoutItem* it = cardLayout_->takeAt(0); if (it->widget()) it->widget()->deleteLater(); - if (it->layout()) { - // 嵌套网格:先回收其子控件,再删布局,避免残留控件泄漏/重叠。 - QLayout* sub = it->layout(); + if (QLayout* sub = it->layout()) { + // 嵌套网格:先回收其子控件(控件归属 card_,删布局不会连带删),再让下方 + // delete it 释放该嵌套布局本身——注意 it == it->layout()(QLayout 即 QLayoutItem), + // 故此处不可再 delete sub,否则与 delete it 重复释放导致崩溃。 while (sub->count() > 0) { QLayoutItem* sit = sub->takeAt(0); if (sit->widget()) sit->widget()->deleteLater(); delete sit; } - delete sub; } delete it; }