Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获得一个c++;对象,并在javascript中使用它 我正在编写一个应用程序,其中我想从C++源中的QML调用函数,C++函数返回我和对象,我可以在QML的JavaScript部分使用它。我已经建立了联系。我尝试发送QValeNoMMAP并尝试在JavaScript中使用该对象,但我没有得到该对象的属性_Javascript_C++_Qml_Qt Quick - Fatal编程技术网

获得一个c++;对象,并在javascript中使用它 我正在编写一个应用程序,其中我想从C++源中的QML调用函数,C++函数返回我和对象,我可以在QML的JavaScript部分使用它。我已经建立了联系。我尝试发送QValeNoMMAP并尝试在JavaScript中使用该对象,但我没有得到该对象的属性

获得一个c++;对象,并在javascript中使用它 我正在编写一个应用程序,其中我想从C++源中的QML调用函数,C++函数返回我和对象,我可以在QML的JavaScript部分使用它。我已经建立了联系。我尝试发送QValeNoMMAP并尝试在JavaScript中使用该对象,但我没有得到该对象的属性,javascript,c++,qml,qt-quick,Javascript,C++,Qml,Qt Quick,,将一个对象从C++传递到QML作为函数返回值,返回值类型需要是Quase,而不是 QValeMangPox,即使是C++代码中的类型。因此,只需将初始化函数签名更改为 QVariant initialize(); 无需更改任何其他内容,即可访问属性 关于您稍后关于希望对返回的对象调用方法的评论,这是不可能的;返回的对象只是一组名称-值对。如果你想让对象拥有,比如, ID/COD>属性,你需要在C++中使用代码> > INSERT 一个值,在C++之前,将其代码添加到QValeMatpP>/C

,将一个对象从C++传递到QML作为函数返回值,返回值类型需要是Quase,而不是 QValeMangPox,即使是C++代码中的类型。因此,只需将
初始化
函数签名更改为

QVariant initialize();
无需更改任何其他内容,即可访问属性


关于您稍后关于希望对返回的对象调用方法的评论,这是不可能的;返回的对象只是一组名称-值对。如果你想让对象拥有,比如,<代码> ID/COD>属性,你需要在C++中使用代码> > INSERT 一个值,在C++之前,将其代码添加到QValeMatpP>/Cuff>。

< P>你要暴露的类必须继承QObjor(或者Q声明项,如果它们是UI组件),你必须在它们的主()中登记它们的类型。或者在加载QML代码之前在Qt插件中


<> < /p> :将QObjas-Basic类型从C++导出到QML有两种方式:

  • 直接从属性读取器或Q_可调用函数返回独立QObject。注意,作为属性返回的对象具有C++所有权,QyIvkabable对象具有JS所有权。您可以通过更改此默认行为
  • 返回QObject的数组。在这种情况下,您应该使用QObjectList、QDeclarativePropertyMap(而不是QVariantMap)或QAbstractListModel

  • 那么在这个阶段,QML会识别C++对象,对吗?是否为您想要访问的元素创建了读写函数?我有这样的C++方法来返回一个qFalm映射<代码> QVERIANTMAP中介::初始化表(){vector表;中介器M;Node TestNode(“1”),表;qValueTest= qVALV::FROUTVING(TestNoLB);qValPATMAP MAP;MAP.INSERT(“1”),proba);return map;}以及更高版本的javascript源代码中,我有:
    函数foo(anObject){console.log(anObject.getId());}
    所以我想从该对象调用一个方法。到目前为止,如果我尝试访问地图,它只会打印“QVariant(Node)”对不起,未格式化的文本您确定该对象返回正确吗?我个人还没有看到任何函数返回对象实例的示例(我可能错了)。另外,我相信任何暴露于qml的对象都需要从QDeclarativeItem继承并向qml注册。。。最后,如果一切正常,并且您得到了正确的实例,我希望通过id属性anObject.id(而不是底层的getter函数)获得对象的id