экспорт QMultiMap & lt; QString, QString & gt; в QML

У меня есть следующие 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

и я пытаюсь выставить / экспортировать typedef QMultiMap<QString, QString> UeTypeLoggedUsers в QML через qmlRegisterType в main.cpp:

#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();
}

Однако, когда я пытаюсь скомпилировать этот код, я получаю следующие ошибки:

ошибка: staticMetaObject не является членом QMultiMap

Почему я получаю эту ошибку и как от нее избавиться?

1

Решение

Вы могли бы использовать QVariantMap прямо в QML через Система свойств Qt. Объявлен как typedef QMap<QString, QVariant>,

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;

};

Вы можете вставить несколько идентичных ключей QMap с QMap :: insertMulti. Это эквивалентно QMultiMap :: вставка.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]