用于QML的Exposing Attributes of C++ Types to QML类必须是QObject
s。我有可能使用非QObjects
s(又名POCO,不是从QObject
派生,而是在Qt元系统中注册)?
如果没有,是否有一个简单的通用包装系统来使我的对象符合QML。我能想到的是为简单的QObject
添加动态属性。
或者有没有办法隐式转换为符合QML的类型,所以我根本不需要换行?
答案 0 :(得分:2)
这实际上是一个热门话题。
我相信你可以注册你自己的POD并将它们传递到它和QML一边(就像黑盒子一样 - 没有任何成员访问,从未尝试过)。要访问成员,可以使用一些get / set包装器代码,可以是QML单例上的方法形式,也可以是有效地用作每个实例包装器的QtObject后代。
目前不支持动态属性 - 您可以使用它们可能会使用一些非常奇怪的技巧,但它可能不值得(但如果您不想绑定对于属性,事情将变得更加简单,它仍然是QObjects。
隐式转换意味着拥有某种预处理器(这可能是可行的,但会耗费大量时间,并且需要将结果提交回Qt(并终身支持))。
我走这条路:
事实上,自定义POD并不享受内置程序所支持的相同级别的支持,标准语言实践是围绕操作垃圾收集的QObject实例(当然通过指针传递到处)构建的,观察了类型的变化属性: