[英]How to send javascript object to C++ from qml?
我在C ++中有一個期望對象的方法:
Q_INVOKABLE void sendValue (const MyClass &value);
我想從qml中調用這個方法,在javascript函數中,如下所示:
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
在main.cpp中,MyClass使用qRegisterMetaType<MyClass>();
但是沒有一個setter被調用,只有MyClass的默認構造函數。
您可以從通過QML發送JavaScript對象到C ++ QVariantMap
使用JavaScript陣列QVariantList
。 另外,你可以使用QVariantMap
++中的QVariantMap
將javascript對象發送到qml。 只需在c ++ Q_INVOKABLE
或插槽中創建函數,並將參數設置為QVariantMap
,並將該QVariantMap
轉換為MyClass {}
。
有關詳細信息,請參閱http://doc.qt.io/qt-5/qtqml-cppintegration-data.html (搜索QVariantList和QVariantMap到JavaScript數組和對象)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.