我用我在运行时创建的对象QVBoxLayout
动态地填充我的对象。QWidget
我也想在运行时删除它们,但是如何?
我可以一一删除小部件:
void QLayout::removeWidget(QWidget * widget)
我可以以某种方式迭代布局吗?
我用我在运行时创建的对象QVBoxLayout
动态地填充我的对象。QWidget
我也想在运行时删除它们,但是如何?
我可以一一删除小部件:
void QLayout::removeWidget(QWidget * widget)
我可以以某种方式迭代布局吗?
条条大路通罗马 ;)
以下代码片段显示了从布局中删除所有项目的安全方法:
QLayoutItem *child; while ((child = layout->takeAt(0)) != 0) { ... delete child; }
要同时删除托管小部件,您只需添加一行:
QLayoutItem *child;
while ((child = layout->takeAt(0)) != 0) {
...
delete child->widget();
delete child;
}
有一种count
方法可以返回存储的小部件的数量,还有一种itemAt()
方法可以在给定索引的情况下返回指向相对存储的小部件的指针。您可以检索所有指针,然后将其删除。您应该首先检索所有指针,因为如果您在计数时删除一个,那么存储的小部件的数量会在迭代期间发生变化。
itemAt()
QLayoutItem
使用检索小部件本身的widget
方法检索 a 。
while (layout->count() != 0) {
QLayoutItem *item = layout->itemAt(0);
layout->removeWidget(item->widget());
}