鉴于以下内容:
struct Property {
QWidget *label;
QWidget *field;
};
QList<Property*> properties;
其中大多数field
是QLineEdit
,但有些是QTimeEdit
,可能是其他类型,例如QDateEdit
。
用于(方便地)以这种方式制作表格:
for(int i = 0; i != properties.size(); i++)
formLayout->addRow( properties.at(i)->label,properties.at(i)->field );
我正在考虑以同样的方式从表单field
中收集值:
foreach (const Property *p, properties)
p->field->value()
问题是没有这样的value()
功能。
这个设计好吗?应该采用哪种方法来实现value()
?
答案 0 :(得分:1)
有多种方法可以做到这一点。
p->metaObject()->className()
方法。qobject_cast<Class*>(p)
。非NULL的那个是正确的类型。p->inherits("CLASS")
来请求继承。