【发布时间】:2013-12-10 01:22:29
【问题描述】:
我有一个包含许多数据成员的 C++ 对象指针。我需要它们都可以在 QML 中使用。一种明显的方法是为每个成员创建一个Q_PROPERTY,以便可以通过 QML 单独访问它们。但是,如果我们谈论的是几十个数据成员,那是Q_PROPERTY 的很多行,更不用说在 QML 中也必须将它们作为单独的属性单独处理(尤其是在为每个处理“on changed”信号时)属性)。
我想知道是否可以创建一个包含我需要的所有数据成员的Q_PROPERTY。但我不清楚the types that QML supports 与您可以在Q_PROPERTY 中列出的类型之间明显不匹配。例如,在 QML 中,我们有一个基本的 string,但它在 C++ 中的对应列表 Q_PROPERTY 必须是 QString:
Q_PROPERTY(QString datastring READ showdata NOTIFY datastringChanged)
//in QML, `datastring` is just a plain string
是否会有更复杂的属性,例如可以轻松匹配的列表或数组? QML 有一个list 类型,C++ 有一个QList,但它们是一回事吗?在哪里可以找到 C++ 和 QML 之间兼容类型的列表?
另一方面,为每个数据成员设置单独的 Q_PROPERTY 可能会带来更好的性能(我的数据很大并且经常变化),因为 QML 可能不需要解析任何内容。
【问题讨论】: