我有一个QDialog,有许多QLineEdit和许多QComboBox来编译一个表单,我想找到一个很好的方法和重用来检查是否所有的字段都被填满了,我想创建一个QList指针QWidgets和用foreach检查所有,但QWidget类没有text->isEmpty()函数,有人能给我一个主意吗?
如果你有一个容器来保存你的表单widgets的指针,你可以实现一个函数来迭代widgets,检查widgets的类型并验证特定的属性,这取决于该类型。例如,我使用
bool isFormComplete(const QList<QWidget *> &widgets)
{
for ( auto w : widgets ) {
if ( auto lineEdit = qobject_cast<QLineEdit *>(w) ) {
if ( lineEdit->text().isEmpty() ) {
// An empty edit box.
return false;
}
} else if ( auto combo = qobject_cast<QComboBox *>(w) ) {
if ( combo->count() == 0 ) {
// An empty combo box.
return false;
}
}
}
return true;
}
我在这里使用 qobject_cast()
函数来验证小组件类型。