【发布时间】:2014-05-20 14:52:15
【问题描述】:
我正在创建 QML 应用程序 (QT 5.2)
假设我有一些对象设置为根上下文:
viewer.rootContext()->setContextObject(&view_model);
现在我想绑定到来自 QML 的 view_model 信号:
Connections {
target: ??? WHAT SHOULD GO HERE ???
onSignalStateChanged: console.log("signal")
}
无法确定目标应该是什么。
重要提示:我不想使用setContextProperty。
【问题讨论】:
-
Important: I don't want to use setContextProperty.有什么好的理由吗? -
整个想法是提供对 data_context 的 QML 访问作为一个入口点。因此,当我每次要使用 setContextProperty 时,我都需要添加“dataContext”。前缀,这有点烦人。结果,我们用它来创建我们需要的 1 个连接;)
-
"当我每次使用 setContextProperty 时,我都需要添加“dataContext”。前缀,这有点烦人” - 嗯,不,你没有。没有什么要求它。如果理解您的问题,那是您没有获得用于连接语法的标识符,因为 QML 没有为上下文对象提供这样的标识符。在这种情况下,您必须使用
setContextProperty才能获得。 -
也许我当时误解了文档。无论如何,我的目标是避免使用“setContextProperty”。我的想法是:“如果我设置了整个上下文对象,我为什么需要它?”
-
也许你做到了。有大量关于将 C++ 对象暴露给 QML 的文章并非巧合,它们都涉及
setContextProperty()方法,而没有一篇涉及设置上下文对象。
标签: qt qml signals-slots