假设有一个名为
我想要的是每当getter或setter访问
是否有其他方法来挂钩Qml属性访问?
Test
的Qml类型,它有一个foo
属性,实现如下:
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
}
以下是使用方法:main.qml
import "."
Test {
id: _test
}
function baz() {
var x = _test.foo;
_test.foo = x;
}
我想要的是每当getter或setter访问
foo
属性时都能得到通知。对于setter,我可以使用fooChanged
信号,但是对于getter没有这样的解决方案。另外,我可以将Test
类型实现为一个C++
类,使用Q_PROPERTY
宏从属性getter/setter中发出相应的信号,但我真的很想将大部分代码留在Qml端。是否有其他方法来挂钩Qml属性访问?
QtObject
将变量设置为私有,并在setter/getter中调用自定义信号,就像您在C++中提出的那样,但完全实现在QML中。在我看来,C++版本感觉更加精致。我想这是一个品味的问题。 - BaCaRoZzo