C++ 导出QMultiMap<;QString,QString>;到QML

C++ 导出QMultiMap<;QString,QString>;到QML,c++,qt,qml,qmultimap,C++,Qt,Qml,Qmultimap,我有以下QObject: #ifndef UETYPES #define UETYPES #include <QHash> #include <QByteArray> #include <QMultiMap> #include <QString> #include <QObject> #include "../database/ueuserrecord.h" #include "../database/ueorderrecord.h

我有以下
QObject

#ifndef UETYPES
#define UETYPES

#include <QHash>
#include <QByteArray>
#include <QMultiMap>
#include <QString>
#include <QObject>

#include "../database/ueuserrecord.h"
#include "../database/ueorderrecord.h"

class UeTypes : public QObject
{
    Q_OBJECT

public:
    typedef QHash<int, QByteArray> UeTypeRoles;

    /*
     * QString  first parameter     userId
     * QString  second parameter    placeId
     */
    typedef QMultiMap<QString, QString> UeTypeLoggedUsers;
};

#endif // UETYPES
但是,当我尝试编译此代码时,会出现以下错误:

错误:“staticMetaObject”不是“QMultiMap”的成员

为什么会出现此错误?如何消除此错误?

您可以通过在
QML
中直接使用。它被声明为
typedef QMap


您可以使用将多个相同的键插入QMap。与.< /p>等价,您可以将C++从仅从QObj.BTW派生的QML类型公开,而尝试QVariantMap。您可以不注册就将其传递给QML。@folibis-hmm,但我需要
QMultiMap
,而不是
QMap
,因为可能有多个相同的键…好的,但您需要以某种方式包装到QObject子体。您可以将其转换为具有成对键/值的QVariantList,而不是QMultiMap吗?
#include <QtQml>
#include <QApplication>
#include <QQmlApplicationEngine>

#include "core/uetypes.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QQmlApplicationEngine engine;

    qmlRegisterType<UeTypes::UeTypeLoggedUsers>("si.test",
                                                1,
                                                0,
                                                "UeTypeLoggedUsers");

    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    return app.exec();
}
class UeTypes : public QObject
{
    Q_OBJECT
    Q_PROPERTY(QVariantMap map READ map WRITE setMap NOTIFY mapChanged)

public:
    QVariantMap map() const { return mMap; }
    void setMap(QVariantMap map) {
       if(mMap != map) {
           mMap = map;
           emit mapChanged();
       }
    }

signals:
    void mapChanged();

private:
    QVariantMap mMap;

};