首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否从QLayout中删除QWidgets?

是否从QLayout中删除QWidgets?
EN

Stack Overflow用户
提问于 2015-09-01 22:12:38
回答 2查看 2.1K关注 0票数 0

我用在运行时创建的QWidget对象动态填充我的QVBoxLayout。我也想在运行时删除它们,但如何删除呢?

我可以一个接一个地删除小部件:

代码语言:javascript
复制
void QLayout::removeWidget(QWidget * widget)

我可以通过某种方式遍历布局吗?

EN

回答 2

Stack Overflow用户

发布于 2015-09-01 22:45:33

条条大路通罗马;)

Qt documentation of QLayout::takeAt声明:

下面的代码片段显示了从布局中移除所有项的安全方法:

QLayoutItem *子代;while ((子代=布局->takeAt( 0) ) != 0){ ...删除下级;}

要删除托管小部件,您只需添加一行:

代码语言:javascript
复制
QLayoutItem *child;
while ((child = layout->takeAt(0)) != 0) {
    ...
    delete child->widget();
    delete child;
}
票数 6
EN

Stack Overflow用户

发布于 2015-09-01 22:20:30

有一个count方法返回存储的小部件的数量,还有一个itemAt()方法在给定索引的情况下返回指向相对存储的小部件的指针。您可以检索所有指针,然后删除它们。您应该首先检索所有指针,因为如果在计数时删除一个指针,则存储的小部件的数量会在迭代过程中发生变化。

itemAt()使用检索小部件本身的widget方法检索QLayoutItem

代码语言:javascript
复制
while (layout->count() != 0) {
  QLayoutItem *item = layout->itemAt(0);
  layout->removeWidget(item->widget());
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32333883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档