【发布时间】:2011-07-21 17:11:54
【问题描述】:
我正在制作一个应用程序,我想在 C++ 源代码中从 QML 调用一个函数,并且该 C++ 函数返回我和对象,我可以在 QML 的 javascript 部分中使用具有相同属性的对象。我已经建立了联系和一切。我尝试发送 QVariantMap 并尝试在 javascript 中使用该对象,但我没有获得该对象的属性
【问题讨论】:
-
所以在这个阶段您的 QML 可以识别 c++ 对象,对吗?您是否为要访问的元素创建了读写函数?
-
我有这样的东西,这个 c++ 方法返回一个 qvariant 映射
QVariantMap Mediator::initialize() { vector<Node*> table; Mediator m; Node TestNode("1", table); QVariant test = QVariant::fromValue(TestNode); QVariantMap map; map.insert("1",proba); return map; }和后来的 javascript 源代码:function foo(anObject) { console.log(anObject.getId()); }所以我想从那个对象调用一个方法。到目前为止,如果我尝试访问地图,它只会打印“QVariant(Node)”抱歉没有格式化的文本 -
您确定对象返回正确吗?我个人还没有看到任何带有返回对象实例的函数的示例(我可能是错的)。此外,我相信任何暴露给 qml 的对象都需要从 QDeclarativeItem 继承并使用 qml 注册...最后,如果一切正常并且您得到正确的实例,我希望通过 id 属性获取对象的 id:anObject.id (不是底层的 getter 函数)
标签: javascript c++ qml qt-quick