来自自定义类的QML变量 >: #ifndef MEDIA_H #define MEDIA_H class Media { public: explicit Media(); virtual ~Media(); void setAllMedia(QString id, QString type, QString media, QString meta); signals: private slots: private: QString _id; QString _type; QString _media; QString _meta; }; #endif

来自自定义类的QML变量 >: #ifndef MEDIA_H #define MEDIA_H class Media { public: explicit Media(); virtual ~Media(); void setAllMedia(QString id, QString type, QString media, QString meta); signals: private slots: private: QString _id; QString _type; QString _media; QString _meta; }; #endif,qml,qt5,qtquick2,qlist,qvariant,Qml,Qt5,Qtquick2,Qlist,Qvariant,在另一个QML文件中,我有一些代码,它可以从类似这样的QML变量中读取非常好的值:main.ml: property variant medias:[[]] ... medias = [{ "id": "7", "type": "image", "media": "1451138132567e9c544fc64.png", "meta": null }, { "id": "8", "type": "image", "media": "145

在另一个QML文件中,我有一些代码,它可以从类似这样的QML变量中读取非常好的值:
main.ml

property variant medias:[[]]
...
medias = [{
    "id": "7",
    "type": "image",
    "media": "1451138132567e9c544fc64.png",
    "meta": null
}, {
    "id": "8",
    "type": "image",
    "media": "1451150881567ece21bb77e.png",
    "meta": null
}, {
    "id": "9",
    "type": "video",
    "media": "1451150924567ece4c68775.png",
    "meta": null
}]
问题是,我需要动态地创建C++中的变体媒体数组,并将其发送到QML。p>
我有一些信号将媒体阵列从C++发送到QML,但是这个数组在代码> qList< /COD>内。如何将其转换为
QVariant
,以便QML能够读取?

如果向注册这些类,则可以在QVariant对象中存储自定义类

<>这将使您的C++代码从代码>媒体>代码>转换为代码> qValue<代码>,但是<>代码>媒体< /代码>类将不能在QML中使用。 相反,只需创建一个
QHash
QMap
来存储属性,因为它们是自动反转的(请参阅)