如何销毁某种类型的所有子窗口小部件

时间:2014-03-27 17:03:11

标签: qt

我使用QFrame和其他一些小部件的循环创建了一些QPushButtons

// Creation of some other widgets here ...
for (int i = 0; i < 100; ++i)
    QPushButton *b = new QPushButton( this );
    b->show();
}

现在我想在不触及其他小部件的情况下销毁所有QPushButtons,我该如何定位它们?

nb:我没有使用布局

3 个答案:

答案 0 :(得分:3)

您可以通过以下方式找到所有按钮:

QList<QPushButton *> allPButtons = parentWidget.findChildren<QPushButton *>();

比你可以全部删除

qDeleteAll(allButtons);
allButtons.clear();

答案 1 :(得分:2)

保留所有QPushButtons的集合并遍历集合以删除它们。

答案 2 :(得分:0)

QList<QPushButton *> Buttons;    


for (int i = 0; i < 100; ++i)
    QPushButton *b = new QPushButton( this );
    Buttons << b;
    b->show();

}

现在您只能删除在该循环中创建的按钮。

qDeleteAll(allButtons);
allButtons.clear();