问:如何清除表格领域?

时间:2010-10-03 07:18:12

标签: qt forms

我有一些形式有fiels,combos等。我想通过表单上的所有小部件,如果它是文本字段,清除它,类似的东西:

foreach(QObject *child, this->ui->children())
{
    QLineEdit *txtField = qobject_cast<QLineEdit *>(child);
    if (txtField)
    {
        txtField->clear();
    }
}

问题是ui对象没有像孩子这样的属性,我不知道如何获得整个子窗口小部件的集合。

表格对象可能有Clear方法。这将是最好的。

由于

2 个答案:

答案 0 :(得分:5)

试试吧。

foreach(QLineEdit *widget, this->findChildren<QLineEdit*>()) {
    widget->clear();
}

答案 1 :(得分:2)

我们谈论了多少QLineEdit个?除非有充分的理由,否则我只需将一个方法添加到具有ui成员的类中,并手动执行,如下所示:

void clearform()
{
    this->ui->firstlineedit->clear();
    this->ui->secondlineedit->clear();
    ...
    this->ui->nthlineedit->clear();
}

你不能这样做的一个很好的理由是QLineEdit是动态添加的,你没有它们作为成员。在这种情况下,您可以在作为所有QLineEdit的父级的小部件上调用QObject::children,如果他们共享一些通用名称,QObject::findChildren也可以使用。