我是Qml的新手,在将javascript处理程序连接到属性信号时遇到了一些麻烦。我有一个带有属性和信号的C ++对象。
class CppObject : public QObject
{
Q_OBJECT
Q_PROPERTY(QVariant value READ getValue WRITE setValue NOTIFY valueChanged)
signals:
void valueChanged(const QVariant &);
};
通过C ++工厂方法创建对象,我可以绑定值 和更改Qml属性。一切正常。
property CppObject obj: cppProxy.PropertyFactory("foo");
Text
{
x: 100;
y: 100;
text: parent.obj.value;
}
对于某些属性,我想将valueChanged信号连接到javascript函数。 我一直在浏览Qml文档,并尝试了一些没有的东西 运气好的话。我认为这样的事情应该有效,但不是
function objEventHandler()
{
console.log('objEventHandler() ran')
}
Component.onCompleted:
{
obj.value.valueChanged.connect(objEventHandler);
}
这样做的最佳方式是什么?
答案 0 :(得分:4)
您也可以在示例中尝试连接,但表单为:
Component.onCompleted:
{
obj.valueChanged.connect(objEventHandler);
}
信号不是'value'对象的属性,而是'obj'的属性。
答案 1 :(得分:2)
使用连接对象很简单。
Connections
{
target: obj;
onValueChanged: console.log('changed');
}