从布局中删除所有QSpacerItem

时间:2014-05-04 21:10:37

标签: c++ qt qtgui qlayout

我使用QSpacerItem方法为布局添加了addStretch()

layout->addStretch(1);

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

如何浏览所有QLayoutItem并仅删除QSpacerItem

1 个答案:

答案 0 :(得分:7)

我个人会写这个:

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;
    }
}

因此,如果代码没有说清楚,那么逻辑就是这样:

  • 查找布局的所有项目。

  • 检查它是否是间隔项目。

  • 如果是,请将其删除。

相关问题