QML/QT-can';t转换QList<;QVariantMap>;在C++;到javascript中的对象数组 ML/QT不能将C++中的QList转换成JavaScript中的对象数组。 class ParamListModel:QAbstractListModel { Q_OBJECT QList<QVariantMap> paramMapObjList; // ... public: // paramMapObjList can not be converted to an array // of objects in javascript // so I have to use this method: // the returned QVariantMap will be converted to javascript object // by QML automatically. Q_INVOKABLE QVariantMap getParamObj(int index); // ... } 类ParamListModel:QAbstractListModel { Q_对象 QList-paramMapObjList; // ... 公众: //无法将paramMapObjList转换为数组 //javascript中对象的定义 //所以我必须使用这个方法: //返回的QVariantMap将转换为javascript对象 //由QML自动生成。 Q_可调用的QVariantMap getParamObj(int索引); // ... }

QML/QT-can';t转换QList<;QVariantMap>;在C++;到javascript中的对象数组 ML/QT不能将C++中的QList转换成JavaScript中的对象数组。 class ParamListModel:QAbstractListModel { Q_OBJECT QList<QVariantMap> paramMapObjList; // ... public: // paramMapObjList can not be converted to an array // of objects in javascript // so I have to use this method: // the returned QVariantMap will be converted to javascript object // by QML automatically. Q_INVOKABLE QVariantMap getParamObj(int index); // ... } 类ParamListModel:QAbstractListModel { Q_对象 QList-paramMapObjList; // ... 公众: //无法将paramMapObjList转换为数组 //javascript中对象的定义 //所以我必须使用这个方法: //返回的QVariantMap将转换为javascript对象 //由QML自动生成。 Q_可调用的QVariantMap getParamObj(int索引); // ... },javascript,c++,qt,qml,Javascript,C++,Qt,Qml,有更好的方法吗?我不确定QML是否理解QVariantMap的QList,但它确实理解QVariant。我通常像这样嵌套QVariantMap数据,以便在ListView项中使用它: QVariant MyClass::myListModel() { QVariantList vList; for(Group *grp : groups()) { QVariantMap vMap; vMap.insert("mIcon", "qrc:/i

有更好的方法吗?

我不确定QML是否理解QVariantMap的QList,但它确实理解QVariant。我通常像这样嵌套QVariantMap数据,以便在ListView项中使用它:

QVariant MyClass::myListModel()
{
    QVariantList vList;

    for(Group *grp : groups())
    {
        QVariantMap vMap;
        vMap.insert("mIcon", "qrc:/icon.svg");
        vMap.insert("mLabel", grp->name());
        vMap.insert("mValue", grp->id());
        vList.append(vMap);
    }

    return QVariant::fromValue(vList);
}
然后你可以有这样一个Q_属性:

Q_PROPERTY(QVariant myListModel READ myListModel NOTIFY myListModelChanged)

您还可以考虑实现一个列表模型,其中每个条目呈现当前传输的值作为<代码> QVIELTANMAP ,但是在更改NoTIFICICFWW上有更多的控制,您可以在<代码> QVIELTANMAP 内包装<代码> QVIELTANMAP 。