【发布时间】:2017-09-28 01:22:39
【问题描述】:
我习惯用参数编写我的“propertyChanged”signals,这样接收端就不需要显式调用Q_PROPERTY 的READ 函数。
我这样做是出于清楚和假设,即在 QML 数据绑定情况下,不需要对 getter 进行“昂贵的”调用来实际获取值,因为它已经作为信号参数传递给 QML。
我的同事不同意,并说这违反了“QML 风格”,对此我做出了回应,文档中明确指出它可能有一个参数会采用基础成员的新值:
MEMBER变量的NOTIFY信号必须采用零个或一个参数,该参数必须与属性的类型相同。该参数将采用属性的新值。
文档中没有任何地方说明 QML 绑定系统使用此参数来防止在处理信号时对 getter 进行额外的函数调用。我知道这个调用可能会从 C++ 进行,因此不会对 C++ 进行“昂贵的”QML 调用,但它仍然是一个额外的函数调用,原则上可能会在多次更新的情况下导致明显的性能损失。
我尝试检查 QML 绑定源代码,但无法从中推断出任何东西。我想知道是否有人知道交易是什么:是否使用了信号参数?
【问题讨论】:
-
请提供一个(代码)示例来演示您感兴趣的场景。
标签: c++ qt data-binding binding qml