我无法弄清楚如何连接到设置为 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 等),但没有真正的方法可以连接到这样的信号吗?