3

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

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

4

2 回答 2

5

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

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

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

于 2013-02-15T22:21:25.233 回答
2

使用连接对象很简单。

Connections
{
    target: obj;
    onValueChanged: console.log('changed');
}
于 2013-02-15T18:46:45.850 回答