QT删除布局内所有的弹簧(QSpacerItem)

场景:

有时候在一个布局里面,加入了一堆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;
        }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容