从布局中删除所有 QSpacerItem

Posted

技术标签:

【中文标题】从布局中删除所有 QSpacerItem【英文标题】:delete all QSpacerItem from a layout 【发布时间】:2014-05-04 21:10:36 【问题描述】:

我已经使用 addStretch() 方法将 QSpacerItem 添加到布局中。

layout->addStretch(1);

现在我想删除它,但我没有任何参考。

如何浏览所有QLayoutItem,只删除QSpacerItem

【问题讨论】:

【参考方案1】:

我会亲自写这个:

for (int i = 0; i < layout->count(); ++i) 
    QLayoutItem *layoutItem = layout->itemAt(i);
    if (layoutItem->spacerItem()) 
        layout->removeItem(layoutItem);
        // You could also use: layout->takeAt(i);
        delete layoutItem;
        --i;
    

所以,如果代码没有说清楚,逻辑就是这样:

查找布局的所有项目。

检查是否为间隔项。

如果是,请将其删除。

【讨论】:

向后迭代对我来说会很奇怪。一个简单的 --i 解决了同样的问题,谢谢。删除也添加了,谢谢。 @Ghilas BELHADJ,您可能希望将我的错误修复集成到您的代码中。

以上是关于从布局中删除所有 QSpacerItem的主要内容,如果未能解决你的问题,请参考以下文章

从布局中删除所有项目

Qt - 从布局中删除所有小部件?

python 从布局中删除所有小部件

从布局 QT 中删除 qwidget

在相对布局中删除所有自定义 ImageView 的简单方法

python 删除布局中的所有项目