从QLayout删除QWidget?

Ral*_*kum 0 qt qwidget qlayout qvboxlayout qt5.4

QVBoxLayoutQWidget在运行时创建的对象动态填充。我也想在运行时将其删除,但是如何?

我可以一一删除小部件:

void QLayout::removeWidget(QWidget * widget)
Run Code Online (Sandbox Code Playgroud)

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

Mur*_*rat 5

条条大路通罗马 ;)

Qt的文档QLayout::takeAt状态:

以下代码片段显示了一种从布局中删除所有项目的安全方法:

QLayoutItem *child;
while ((child = layout->takeAt(0)) != 0) {
    ...
    delete child;
}
Run Code Online (Sandbox Code Playgroud)

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

QLayoutItem *child;
while ((child = layout->takeAt(0)) != 0) {
    ...
    delete child->widget();
    delete child;
}
Run Code Online (Sandbox Code Playgroud)