我用在运行时创建的QWidget对象动态填充我的QVBoxLayout。我也想在运行时删除它们,但如何删除呢?
我可以一个接一个地删除小部件:
void QLayout::removeWidget(QWidget * widget)我可以通过某种方式遍历布局吗?
发布于 2015-09-01 22:45:33
条条大路通罗马;)
Qt documentation of QLayout::takeAt声明:
下面的代码片段显示了从布局中移除所有项的安全方法:
QLayoutItem *子代;while ((子代=布局->takeAt( 0) ) != 0){ ...删除下级;}
要删除托管小部件,您只需添加一行:
QLayoutItem *child;
while ((child = layout->takeAt(0)) != 0) {
...
delete child->widget();
delete child;
}发布于 2015-09-01 22:20:30
有一个count方法返回存储的小部件的数量,还有一个itemAt()方法在给定索引的情况下返回指向相对存储的小部件的指针。您可以检索所有指针,然后删除它们。您应该首先检索所有指针,因为如果在计数时删除一个指针,则存储的小部件的数量会在迭代过程中发生变化。
itemAt()使用检索小部件本身的widget方法检索QLayoutItem。
while (layout->count() != 0) {
QLayoutItem *item = layout->itemAt(0);
layout->removeWidget(item->widget());
}https://stackoverflow.com/questions/32333883
复制相似问题