如何从 qml 将 javascript 对象发送到C++
How to send javascript object to C++ from qml?
我在C++中有一个需要对象的方法:
Q_INVOKABLE void sendValue (const MyClass &value);
我想在javascript函数中从qml调用此方法,如下所示:
MyApi.sendValue({
"one":"one",
"two":2.0,
"three": false,
"four": [ 5, 6 ],
}
});
MyClass 定义如下:
#ifndef MYCLASS_H
#define MYCLASS_H
#include <QString>
#include <QVariant>
class MyClass {
QString one;
double two;
bool three;
int four[10];
public:
MyClass();
~MyClass();
// getters, setters, etc.
};
Q_DECLARE_METATYPE(MyClass)
#endif // MYCLASS_H
在主要.cpp中,MyClass已在qRegisterMetaType<MyClass>();
注册但是没有一个setter被调用,只有MyClass的默认构造函数。
您可以通过 QVariantMap
将 javascript 对象发送到 c++ 和带有 QVariantList
的 javascript 数组。它也可以采用另一种方式,您可以使用 c++ 中的 QVariantMap
将 javascript 对象发送到 qml。只需在 c++ Q_INVOKABLE
或插槽中制作函数,并QVariantMap
参数,然后将该QVariantMap
转换为 MyClass {}
即可。
有关详细信息,请参阅 http://doc.qt.io/qt-5/qtqml-cppintegration-data.html(搜索 QVariantList 和 QVariantMap to JavaScript Array and Object)。
相关文章:
- 引用对象中的通用值
- jQuery匹配JSON对象的部分文本
- 节点导出返回一个空对象
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 全局变量和全局对象的属性之间有什么区别吗
- 比较从函数和生成的日期对象
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 调整窗口大小时,可拖动的对象会出现在容器外部
- 如何使用javascript从主svg对象动态创建svg视图框
- 如何使用json将对象列表从java转换为javascript
- 序列化数据属性中对象的最可靠方法
- 如何访问声音管理器2创建的声音对象
- FabricJs-限制主对象内添加对象的移动区域
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 值对象在某个变量发生更改后发生更改
- 如何为json对象中的段发送array[]
- Chrome开发工具(如何知道我在调用哪个javascript对象)