1、对于C++类属性的关联信号

为了最大化与QML的互操作性,任何可写属性都应该有一个关联的通知信号,该信号在属性值发生更改时发出。这允许将属性与属性绑定一起使用,属性绑定是QML的一个基本特性,它通过在任何依赖项值发生变化时自动更新属性来强制属性之间的关系。


2、对于派生自QObject的类

通常无论qobject派生类是否已注册到QML类型系统,都可以从QML访问这些类。
如果类本身是用作方法参数或属性,或者如果它的一个枚举类型中使用这种方式,此时该类就需要注册,否则,是不需要注册就可以直接访问的。【这一点很重要】


3、关于C++类中信号函数的命令规则

建议将通知信号命名为Changed,其中是属性的名称。由QML引擎生成的相关属性更改信号处理程序将始终采用on< Property >Changed的形式,而不管相关的C++信号的名称是什么,因此建议信号名称遵循此约定,以避免任何混淆。
(3-1)为了防止循环或过度求值,应该确保只在属性值实际发生更改时发出属性更改信号。

(3-2)如果一个属性或一组属性不经常使用,则允许对多个属性使用相同的通知信号。但是,该种处理方式可能会影响应用程序的性能。

(3-3)属性更改通知信号的存在确实会带来很小的开销。有些情况下,例如:属性值在对象构造时被设置,但随后没有被更改。最常见的情况是,当一个类型使用分组属性时,分组属性对象被分配一次,并且只有在对象被删除时才释放。在这种情况下,常量属性可以添加到属性声明中,而不是添加通知信号

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐