至于将C++类型的属性暴露给与QML一起使用的QML类必须是QObjects.我有可能使用非QObjectss(又名POCO,不是从QObjectQt元系统中派生出来的,而是注册的)
如果没有,是否有一个简单的通用包装系统,使我的对象符合QML.我能想到的是将动态属性添加到简单的属性中QObject.
或者有没有办法隐式转换为QML兼容类型,所以我根本不需要包装?
这实际上是一个热门话题。
我相信您可以注册自己的 POD 并将它们传递到 ito 和 QML 端(就像黑匣子一样 - 没有任何成员访问权限,从未尝试过)。为了访问成员,可以使用一些获取/设置包装器代码,无论是在 QML 单例上的方法形式,还是在有效充当每个实例包装器的 QtObject 后代上。
目前不支持动态属性——您可以使用一些非常奇怪的技巧让它们工作,但这可能不值得(但如果您不想绑定到属性,事情会变得简单得多,并且它仍然是 QObjects)。
隐式转换意味着需要某种预处理器(这可能是可行的,但会花费大量时间,并且需要将结果提交回 Qt(并终身支持))。
我会这样走:
问题是,自定义 POD 不享有与内置相同级别的支持,并且标准语言实践是围绕操作垃圾收集的 QObject 实例(当然,通过指针到处传递)而构建的,这些实例已经受到关注 -更改类型的属性:
| 归档时间: |
|
| 查看次数: |
965 次 |
| 最近记录: |