有时想要动态增删布局里的元素,对于增加元素可以直接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;
}
}
}
本文介绍了一种在Qt中清除布局及子布局内所有元素的方法。通过递归方式遍历并销毁指定布局内的所有子控件及其子布局。该方法适用于需要动态调整界面布局的应用场景。
793





