c – 从布局中删除所有QSpacerItem

我已经使用addStretch()方法向布局添加了QSpacerItem.

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

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

>查找布局的所有项目.
>检查它是否是间隔项.
>如果是,请将其删除.

上一篇:ATT&CK框架学习


下一篇:python – 来自QFontDatabase的令人困惑的行为