如何将JavaScript函数连接到属性信号?

时间:2013-02-15 17:03:28

标签: qt qml

我是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);
}

这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:4)

您也可以在示例中尝试连接,但表单为:

Component.onCompleted:
{
    obj.valueChanged.connect(objEventHandler);
}

信号不是'value'对象的属性,而是'obj'的属性。

答案 1 :(得分:2)

使用连接对象很简单。

Connections
{
    target: obj;
    onValueChanged: console.log('changed');
}