Название: Передача ассоциативного массива из QML в C++. Преобразование QJSValue в QVariant Отправлено: xintrea от Сентябрь 29, 2022, 10:12 Имеется Qt 5.11.
Вызываю функцию из QML через JavaScript. В качестве параметра передается ассоциативный массив (индексы - строки и значения - строки). Код: var a; В документации сказано, что такой массив должен автоматически преобразовываться в QVariantMap. https://doc.qt.io/qt-5/qtqml-cppintegration-data.html Однако все, что я могу вытащить из QJSValue - это QVariantList (это алиас QList<QVariant>). Да и то этот список будет нуливого размера. Вот код: Код: void OurClass::ourMethod(QJSValue jsVal) Вот результат: Код: void OurClass::ourMethod(QJSValue) Слот ourMethod() Здесь видно, что isObject() и isArray() одновременно выдают true. Не знаю, должно ли так быть. Узнать какой тип содержится в QVariant элемента списка я не могу придумать как, так как нет даже первого элемента, ведь список пустой. В общем, задача - передать ассоциативный массив из QML в C++, но я не могу разобраться как это сделать. Везде пишется как конвертить из C++ в QML, а мне надо наоборот. У буржуев нашел вот такое: https://lists.qt-project.org/pipermail/development/2014-September/018513.html Но тут тоже направление из C++ в QML. Как будто из QML в C++ никто ничего структурированного не передает. Название: Re: Передача ассоциативного массива из QML в C++. Преобразование QJSValue в QVariant Отправлено: Old от Сентябрь 29, 2022, 10:52 QJSValueIterator
QJSValue QJSValue::property(const QString &name) const Название: Re: Передача ассоциативного массива из QML в C++. Преобразование QJSValue в QVariant Отправлено: xintrea от Сентябрь 29, 2022, 17:37 QJSValueIterator QJSValue QJSValue::property(const QString &name) const Решение тут: https://www.linux.org.ru/forum/development/16985890 |