c++ - 从表单的小部件收集值

标签 c++ qt data-structures qt4 qt5

鉴于以下情况:

struct Property {
  QWidget *label;
  QWidget *field;
};
QList<Property*> properties;

其中大部分 fieldQLineEdit 但有些是 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() 应该采用哪种方法?

最佳答案

有多种方法可以做到这一点。

  1. 一个丑陋的方法是使用 p->metaObject()->className()方法。
  2. 更好的方法是使用 qobject_cast<Class*>(p)对于所有可能的类型。不为 NULL 的是正确的类型。
  3. 你可以使用 p->inherits("CLASS")要求继承。

关于c++ - 从表单的小部件收集值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34336953/

相关文章:

c++ - 我正在使用 QDir().isReadable 来检查驱动器是否可读。在 Qt Creator 中它运行良好,但是当我运行 exe 时它一直给我错误

algorithm - BST 中的第二个最大值

c++ - 快速线路查询的数据结构?

c++ - 使用指针从 std::list 中删除项目

c++ - ReleaseSemaphore 不释放信号量

c++ - 没有循环的整数直方图

c++ - Qt; QWidget 移除和删除。 setParent(NULL) 有必要吗?

c++ - 访问作为类 vector 元素的对象的成员函数

c++ - 如何在Qt中完成下拉单词建议?

algorithm - 带有 GraphQL 响应属性过期的 JSON 对象缓存