Как получить доступ к массиву, который является значением QVariantMap?

У меня есть QVariantMap, ключ которого является строкой, а значение - массивом (целых чисел или строк)

Как мне получить отдельные элементы массива?

map ["key"] имеет метод toList (). Могу ли я применить это к массивам?


person user1065969    schedule 13.06.2012    source источник


Ответы (2)


Да,

QString first_string_of_key = QVariantMap["key"].toList()[0];

но это только для чтения. Любая попытка записи не будет работать, потому что QVariant вернет копию списка. Прочтите это сообщение: Назначение вложенной QVariantMap

person Joren Boulanger    schedule 29.08.2012

Может быть, вы можете попробовать это, если мы скажем, что у нас есть итератор it, перемещающий ключи:

мы могли бы сказать

if(it.value("key").type()==QMetaType::ByteArray)
  std::vector<std::string> vs_array_valus(QVariantMap["key"].value().toArray());

Или прямое использование, как показано ниже:

if(QVariantMap["key"].value().type()==QMetaType::ByteArray)
std::vector<std::string> vs_array_valus(QVariantMap["key"].value().toArray());

Надеюсь, это поможет.

person norrr    schedule 01.04.2020