簡體   English   中英

如何從qml發送javascript對象到C ++?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM