Я смотрю на передачу объекта QList<QMap<QString, QString>>
из моего кода Qt в файл JavaScript и задаюсь вопросом, как правильно обрабатывать часть кода qScriptRegisterMetaType.
В настоящее время я рассматриваю возможность использования в моем методе преобразования значений Script частей метода регистрации QList и метода регистрации QMap.
Код, на который я ссылаюсь, можно найти здесь для QList и здесь для QMap.
В частности, при преобразовании QList<QMap<QString, QString>>
в QScriptValue я хочу использовать этот фрагмент для обработки части QMap:
QScriptValue obj = engine->newObject();
StringMap::const_iterator it(map.begin());
for (; it != map.end(); ++it)
{
obj.setProperty(it.key(), qScriptValueFromValue(engine,it.value()));
}
return obj;
Используя это, я хочу затем запустить преобразование QMap, устанавливая каждое свойство для QList и возвращая полученное значение QScriptValue.
QScriptValue ScriptListtoScriptValue(QScriptEngine* engine, const ListMap& list)
{
QScriptValue obj = engine->newArray(list.size());
for ( int i = 0; i < list.size(); i++ ) {
obj.setProperty(i, engine->newQObject(list[i]));
}
return obj;
}
Могу ли я вызвать функцию, которая запускает преобразование QMap внутри преобразования QList, и установить свойство таким образом? Мне интересно, если я что-то упустил или Qt не будет доволен этим и не передаст данные должным образом в JavaScript.
Что касается причины, по которой я это делаю: я хочу отправить структуру в JavaScript, чтобы QMap содержал пару ключ/значение для нескольких имен столбцов и значений в виде отдельной записи. Затем QList будет списком этих записей. Если у меня есть недостатки в моем подходе и есть лучший способ отправить такую информацию из Qt в JavaScript, я был бы очень признателен за конструктивную критику.