1

我无法弄清楚如何连接到设置为 ContextObject 的对象中的信号,如果已将其设置为 ContextProperty,则可以使用“target:”的上下文属性名称创建 Connections{} 元素。但是 ContextObject 对象的名称是什么?

我有一个像这样的 QObject:

class Model : public QObject
{
       Q_OBJECT
       Q_PROPERTY(bool featureActive READ featureActive NOTIFY featureActiveChanged)
...

我将它设置为我的视图的 ContextObject,如下所示:

qmlRegisterUncreatableType<Model>("model_import_name", 1, 0, "Model");
...->rootContext()->setContextObject(model);

在 QML 中,我可以通过属性名称访问属性,但无法弄清楚如何对更改的信号做出反应:*.qml:

import model_import_name 1.0
...
visible: featureActive // Can access the getter! Great!

 // Runtime error: Cannot assign to non-existent property "onFeatureActiveChanged"
onFeatureActiveChanged: { <do something> } 

// Runtime error: QML Connections: Cannot assign to non-existent 
//property "onFeatureActiveChanged"
Connections{
    target: this
    onFeatureActiveChanged: {
        <do something>
    }
}

有任何想法吗?ContextObject 是否有(秘密?)属性名称?当然有解决方法(onVisibleChange、onQmlDummyVariableBoundToFeatureActiveChanged 等),但没有真正的方法可以连接到这样的信号吗?

4

0 回答 0