Цитирование документов QT:
Вы даже можете хранить значения QList и QMap в одном варианте, так что вы можете легко создавать произвольно сложные структуры данных произвольных типов.Это очень мощный и универсальный инструмент, но он может оказаться менее эффективным с точки зрения памяти и скорости, чем при хранении определенных типов в стандартных структурах данных.
Кто-нибудь знает или имеет пример такого выполнения?
Я давний программист на C ++, но QT Nube и копия семантики записи дают мне припадки.Карты и списки структур данных QVariants кажутся неизменными.Каждый раз, когда я пытаюсь изменить дерево значений, я просто изменяю копию.
Получил отзыв от моего первого поста, в котором я должен добавить пример.Здесь идет:
// Input Data:
//
// { "f1" : "field-1",
// "list" : [ 0, 1, 2, 3, 4 ] }
//
// Convert the data, commented above, into a QVariantMap with two
// values:
// "f1" - a string
// "list" - a QVariantList of integers
QVariant vData = ConvertJsonDocument(document);
// Dump
qWarning( VariantToString(vData).toLocal8Bit() );
// Convert vData to QVariantMap
QVariantMap vMap = vData.value<QVariantMap>();
// Get the list of integers as a QVariantList
QVariantList vList = vMap["list"].value<QVariantList>();
// Change the 0 to a 5
vList[0] = 5;
// Dump
qWarning( VariantToString(vData).toLocal8Bit() );
Вывод сверху:
{ "f1" : "field-1", "list" : [ 0, 1, 2, 3, 4 ] }
{ "f1" : "field-1", "list" : [ 0, 1, 2, 3, 4 ] }
Желаемый вывод сверху:
{ "f1" : "field-1", "list" : [ 0, 1, 2, 3, 4 ] }
{ "f1" : "field-1", "list" : [ 5, 1, 2, 3, 4 ] }
Я получаю, что я изменяю копии, но дляжизнь моя, я не могу понять, как не надо.Как мне отредактировать исходные данные?(Данные в дереве имеют корни в vData.)