鉴于以下情况:
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 );
我正在考虑以相同的方式从表单的字段
中收集值:
foreach (const Property *p, properties)
p->field->value()
问题是没有这样的 value()
函数。
这样的设计好吗?为了实现 value()
应该采用哪种方法?
最佳答案
有多种方法可以做到这一点。
- 一个丑陋的方法是使用
p->metaObject()->className()
方法。 - 更好的方法是使用
qobject_cast<Class*>(p)
对于所有可能的类型。不为 NULL 的是正确的类型。 - 你可以使用
p->inherits("CLASS")
要求继承。
关于c++ - 从表单的小部件收集值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34336953/