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

layout->addStretch(1);

现在我想删除它,但我没有任何引用。

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

最佳答案

我个人会这样写:

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

所以,如果代码没有说清楚,逻辑将是这样的:
  • 查找布局的所有项目。
  • 检查是否为间隔项。
  • 如果是,删除它。
  • 关于c++ - 从布局中删除所有 QSpacerItem,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23461614/

    10-12 20:40