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

uro*_*roc 3 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 &);
};
Run Code Online (Sandbox Code Playgroud)

这些对象是通过 C++ 工厂方法创建的,我能够将值和更改绑定到 Qml 属性。这一切都有效。

property CppObject obj: cppProxy.PropertyFactory("foo");

Text
{
    x: 100;
    y: 100;
    text: parent.obj.value;
}
Run Code Online (Sandbox Code Playgroud)

对于某些属性,我想将 valueChanged 信号连接到 javascript 函数。我一直在浏览 Qml 文档并尝试了很多东西,但没有任何运气。我认为这样的事情应该有效,但没有

function objEventHandler()
{
    console.log('objEventHandler() ran')
}

Component.onCompleted:
{
    obj.value.valueChanged.connect(objEventHandler);
}
Run Code Online (Sandbox Code Playgroud)

做这个的最好方式是什么?

Mar*_*inJ 5

您也可以按照您在示例中尝试过的方式进行连接,但形式为:

Component.onCompleted:
{
    obj.valueChanged.connect(objEventHandler);
}
Run Code Online (Sandbox Code Playgroud)

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