场景:
有时候在一个布局里面,加入了一堆widget之后,为了使widget保持紧凑。 通过addItem 加入了弹簧。之后,加入这个界面需要刷新,把里面的widget都移除掉,加入新的一批widget。 这时候就会发现,里面还有一根弹簧在顶着,没有被移除。
百度出的解决方法:
把弹簧的指针保存下来。 清理的时候使用layout->removeItem方法移除。
这个方法缺点:1.要维护一个指针,繁琐 还容易出错。
2.假如弹簧数量多,或者代码混乱,找不到哪些地方在往布局里面加弹簧,会有漏网之。
更好的办法:
for (int i = 0; i < pLayout->count(); ++i)
{
QLayoutItem *layoutItem = pLayout->itemAt(i);
if (layoutItem->spacerItem())
{
pLayout->removeItem(layoutItem);
--i;
}
}