获取所有子控件并删除
void Widget::on_pushButton_add_clicked()
{
QWidget *w = ui->widget_temp;
#if 0
QLayout *oldLayout = w->layout();
if (oldLayout) {
delete oldLayout;
}
#endif
delete w->layout();// 这么写或许更好,在C++中,delete空指针是可以的
QGridLayout *grid = new QGridLayout(w);
for (int i = 0; i < 3; ++i) {
QLabel *label = new QLabel(QString("%1 :").arg(i), w);
grid->addWidget(label, i, 0, 1, 1);
QLineEdit *edit = new QLineEdit(w);
edit->setText(QString::number(i * 10));
grid->addWidget(edit, i, 1, 1, 1);
}
}
void Widget::on_pushButton_clear_clicked()
{
QWidget *w = ui->widget_temp;
QList<QWidget*> items = w->findChildren<QWidget*>();
for (QWidget *item : items) {
delete item;
}
// 或者:
#if 0
for (QWidget *item : items) {
w->layout()->removeWidget(item);
item->setParent(nullptr);
item->deleteLater();
}
#endif
}
原始UI
点击add
点击clear