Qt:如何清除表单的字段?
问题描述:
我有一些形式fiels,连击等。我想通过表单上的所有部件走了过来,并举例来说,如果它的文本框,将其清除,这样的事情:Qt:如何清除表单的字段?
foreach(QObject *child, this->ui->children())
{
QLineEdit *txtField = qobject_cast<QLineEdit *>(child);
if (txtField)
{
txtField->clear();
}
}
问题是UI对象没有像儿童这样的属性,我不知道如何获得儿童小部件的整个集合。
也许表单对象有类似Clear方法。这将是最好的。
感谢
答
试试吧。
foreach(QLineEdit *widget, this->findChildren<QLineEdit*>()) {
widget->clear();
}
答
多少QLineEdit
s的,我们在谈论什么?除非有一个很好的理由,我只想用手工添加一个方法到具有ui
作为成员的类并做到这一点,就像这样:
void clearform()
{
this->ui->firstlineedit->clear();
this->ui->secondlineedit->clear();
...
this->ui->nthlineedit->clear();
}
一个很好的理由,你为什么不能做这种方式是, QLineEdit
s是动态添加的,您没有它们作为成员。在这种情况下,您可以在小部件上致电QObject::children,小部件是所有QLineEdit
的父项,如果它们共用一些通用名称,则QObject::findChildren也可以使用。
是的,它为我工作,谢谢!但我不得不删除setupUi代码,因为表单里面有一些奇怪的附加小部件。我想我不需要它,因为此方法之前被调用过。 – mimic 2010-10-05 05:32:59
'setupUi'代码不应该在那里......初始化后清除表单并没有多大意义 - 并且多次调用setupUi可能导致内存泄漏。 – 2015-12-17 15:34:16
@TomášZato我同意。我不知道为什么我把它放在那里。也许可以告诉它需要在某个地方被调用。 – wrongite 2015-12-17 18:28:37