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

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

layout->addStretch(1);

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

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

【问题讨论】:

    标签: c++ qt qtgui qlayout


    【解决方案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,您可能希望将我的错误修复集成到您的代码中。
    猜你喜欢
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多