Имеется Qt 5.11.
Вызываю функцию из QML через JavaScript. В качестве параметра передается ассоциативный массив (индексы - строки и значения - строки).
var a;
a["one"]=odin;
a["two']=dva;
ourExemplar.ourMethod(a);
В документации сказано, что такой массив должен автоматически преобразовываться в QVariantMap.
https://doc.qt.io/qt-5/qtqml-cppintegration-data.htmlОднако все, что я могу вытащить из QJSValue - это QVariantList (это алиас QList<QVariant>). Да и то этот список будет нуливого размера.
Вот код:
void OurClass::ourMethod(QJSValue jsVal)
{
    qDebug() << Q_FUNC_INFO << "Слот ourMethod()";
    qDebug() << "Результат isObject(): "  << jsVal.isObject();
    qDebug() << "Результат isQObject(): " << jsVal.isQObject();
    qDebug() << "Результат isArray(): "   << jsVal.isArray();
    qDebug() << "Результат isVariant(): " << jsVal.isVariant();
    qDebug() << "QJSValue содержит тип " << jsVal.toVariant().userType();
    qDebug() << "Тип QVariant "     << qMetaTypeId<QVariant>();
    qDebug() << "Тип QVariantList " << qMetaTypeId<QVariantList>();
    qDebug() << "Тип QVariantMap "  << qMetaTypeId<QVariantMap>();
    qDebug() << "Тип QJSValue: "    << qMetaTypeId<QJSValue>();
    QVariantList list=jsVal.toVariant().toList();
    qDebug() << "Длинна list: " << list.size();
Вот результат:
void OurClass::ourMethod(QJSValue) Слот ourMethod()
Результат isObject():  true
Результат isQObject():  false
Результат isArray():  true
Результат isVariant():  false
QJSValue содержит тип  9
Тип QVariant  41
Тип QVariantList  9
Тип QVariantMap  8
Тип QJSValue:  1056
Длинна list:  0
Здесь видно, что isObject() и isArray() одновременно выдают true. Не знаю, должно ли так быть.
Узнать какой тип содержится в QVariant элемента списка я не могу придумать как, так как нет даже первого элемента, ведь список пустой.
В общем, задача - передать ассоциативный массив из QML в C++, но я не могу разобраться как это сделать. Везде пишется как конвертить из C++ в QML, а мне надо наоборот. У буржуев нашел вот такое:
https://lists.qt-project.org/pipermail/development/2014-September/018513.htmlНо тут тоже направление из C++ в QML. Как будто из QML в C++ никто ничего структурированного не передает.