有时想要动态增删布局里的元素,对于增加元素可以直接addwidget进行添加,但是当想要删除元素时,利用Layout提供的removeWidget方法只能将widget从布局里移除,其本身仍然留在父窗口内集中显示在QPoint(0,0)位置,因此在从布局里移除元素后还需要调用delete将其销毁。以下方法提供一种删除所有元素的方法,包括子布局中元素
void SearchClassify::ClearLayout(QLayout* layout) {
QLayoutItem* item;
QLayout* sublayout;
QWidget* widget;
while ((item = accounts_->layout()->takeAt(0))) {
if ((sublayout = item->layout()) != 0) {
ClearLayout(sublayout);
} else if ((widget = item->widget()) != 0) {
layout->removeWidget(widget);
delete widget;
} else {
delete item;
}
}
}