Qt 如何从QML绑定到根上下文对象信号

Qt 如何从QML绑定到根上下文对象信号,qt,qml,signals-slots,Qt,Qml,Signals Slots,我正在创建QML应用程序(Qt5.2) 假设我将某个对象设置为根上下文: viewer.rootContext()->setContextObject(&view_model); 现在我想绑定到来自QML的view\u model信号: Connections { target: ??? WHAT SHOULD GO HERE ??? onSignalStateChanged: console.log("signal") } 无法确定目标应该是什么 重要信息:我

我正在创建QML应用程序(Qt5.2)

假设我将某个对象设置为根上下文:

viewer.rootContext()->setContextObject(&view_model);
现在我想绑定到来自QML的
view\u model
信号:

Connections {
    target: ??? WHAT SHOULD GO HERE ???
    onSignalStateChanged: console.log("signal")
}
无法确定目标应该是什么


重要信息:我不想使用
setContextProperty

如果您无权访问对象实例(例如,通过上下文属性),则您似乎无法使用
连接。但您仍然可以使用以下内容:

function onSignal() {
    console.log( "signal" );
}
Component.onCompleted: {
    onSignalStateChanged.connect( onSignal );
}

重要提示:我不想使用setContextProperty。
有什么好的理由吗?整个想法是提供对数据上下文的QML访问作为一个入口点。所以,每当我想使用setContextProperty时,我都需要添加“dataContext.”前缀,这有点烦人。因此,我们使用它创建了所需的1个连接;)“每次我想使用setContextProperty时,我都需要添加'dataContext.'前缀,这有点烦人”-嗯,不,你不需要。没有什么要求它。如果您不理解您的问题,那就是您没有获得连接语法所需的标识符,因为QML没有为上下文对象提供这样的标识符。在这种情况下,您必须使用
setContextProperty
才能获得一个。也许我当时误解了文档。无论如何,我的目标是避免使用“setContextProperty”。我的想法是:“如果我设置了整个上下文对象,为什么我需要它?”。这不是巧合,有大量的文章将C++对象暴露到QML,它们都涉及 SETCONTXEXPROFITER()/COM>方法,而不是单个的涉及设置上下文对象。我是否正确地理解了,一旦创建对象,就在这里动态创建连接?如果行得通,我就试试。是的,没错。我试图找到另一种方法,但没有成功。我花了几个小时寻找它……在找到它之前,我必须使用
QQmlContext*context=m_quickViewPtr->rootContext();上下文->设置上下文对象(此);context->setContextProperty(QStringLiteral(“plugin”),这个)