假设有一个Test带有foo属性调用的Qml类型,它的实现如下:
Test.qml
// Not necessarily QtObject, but derived from QObject
QtObject {
// Not necessarily var/property, but must behave like property (i.e. be accessible using "<instance>.foo")
property var foo
}
Run Code Online (Sandbox Code Playgroud)
并以下列方式使用:
main.qml
import "."
Test {
id: _test
}
function baz() {
var x = _test.foo;
_test.foo = x;
}
Run Code Online (Sandbox Code Playgroud)
我想要的是每次foogetter 或 setter 访问属性时都得到通知。对于 setter,也许我可以使用fooChanged信号,但是对于 getter 没有这样的解决方案。我也可以将Test类型实现为C++带有Q_PROPERTY宏的类,并从属性 getter/setter 中发出相应的信号,但我真的很想将大部分代码留在 Qml 端。
还有其他方法可以挂钩 Qml 属性访问吗?