У меня есть QVariantMap, ключ которого является строкой, а значение - массивом (целых чисел или строк)
Как мне получить отдельные элементы массива?
map ["key"] имеет метод toList (). Могу ли я применить это к массивам?
У меня есть QVariantMap, ключ которого является строкой, а значение - массивом (целых чисел или строк)
Как мне получить отдельные элементы массива?
map ["key"] имеет метод toList (). Могу ли я применить это к массивам?
Да,
QString first_string_of_key = QVariantMap["key"].toList()[0];
но это только для чтения. Любая попытка записи не будет работать, потому что QVariant вернет копию списка. Прочтите это сообщение: Назначение вложенной QVariantMap
Может быть, вы можете попробовать это, если мы скажем, что у нас есть итератор 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());
Надеюсь, это поможет.