Название: Спискок значений -> Список пар значений. Отправлено: nwnclv от Февраль 24, 2015, 01:06 Приветствую!
Есть задача. Функция должна принять (из QML в С++) список значений (int) и должна вернуть список пар значений (int -> int). Далее подобный список пар может принимать другая функция (это к тому, что подобный список пар может быть создан внутри QML и скормлен в C++ код). То есть в идеале обойтись бы каким-нибудь стандартным методом QML/JS/C++, чтоб не городить костыли вроде описания своего Qобъекта, который хранит эти пары. Какой наиболее правильный вариант реализации сего в Qt/QML? Название: Re: Спискок значений -> Список пар значений. Отправлено: carrygun от Февраль 24, 2015, 05:16 JSON и QVariantMap не подходит?
Название: Re: Спискок значений -> Список пар значений. Отправлено: nwnclv от Февраль 24, 2015, 13:07 JSON и QVariantMap не подходит? о!, кажется то, что надо. Тогда еще один вопрос. Я правильно понял, что писать в QVariantMap из C++ можно только с ключом типа QString? И еще вопрос по порядку данных. то есть QVariantMap в качестве результата подходит, а вот в качестве параметра не совсем. Мне нужно как-то сохранить порядок аргументов. Например я передаю Код Я хочу, чтоб параметры пришли именно в таком порядке. 7, 2, 3, 4 В какой-нибудь QList<QPair<...>> это можно разложить вместо QVariantMap? Название: Re: Спискок значений -> Список пар значений. Отправлено: nwnclv от Февраль 24, 2015, 13:55 Странную вещь нашел.
Сделал вот так: Код
и при вызове из QML Код
я получаю пустой список. Хотя в консоль падает, что Код: [[object Object],[object Object],[object Object]] ---- А, понял. Нужно через QVariantList делать и потом уже приводить toMap( ). хм. Странно все это =) Название: Re: Спискок значений -> Список пар значений. Отправлено: carrygun от Февраль 25, 2015, 05:34 Мне нужно как-то сохранить порядок аргументов. Например я передаю Используй итераторы.Код Я хочу, чтоб параметры пришли именно в таком порядке. 7, 2, 3, 4 Название: Re: Спискок значений -> Список пар значений. Отправлено: nwnclv от Февраль 25, 2015, 18:27 Используй итераторы. Какие итераторы? Код
Код: 2:0; 3:0; 4:0; 7:0; Название: Re: Спискок значений -> Список пар значений. Отправлено: gil9red от Февраль 25, 2015, 19:07 Используй итераторы. Какие итераторы? Код
Код: 2:0; 3:0; 4:0; 7:0; У словарей тоже есть итераторы. http://qt-project.org/doc/qt-4.8/qmap.html: Цитировать If you want to navigate through all the (key, value) pairs stored in a QMap, you can use an iterator. QMap provides both Java-style iterators (QMapIterator and QMutableMapIterator) and STL-style iterators (QMap::const_iterator and QMap::iterator). Here's how to iterate over a QMap<QString, int> using a Java-style iterator: QMapIterator<QString, int> i(map); while (i.hasNext()) { i.next(); cout << i.key() << ": " << i.value() << endl; } Here's the same code, but using an STL-style iterator this time: QMap<QString, int>::const_iterator i = map.constBegin(); while (i != map.constEnd()) { cout << i.key() << ": " << i.value() << endl; ++i; } Название: Re: Спискок значений -> Список пар значений. Отправлено: nwnclv от Февраль 25, 2015, 19:32 м?
Вроде написано, что это просто 2 разных стиля итераторов. И как он поможет порядок сохранить? Цитировать With QMap, the items are always sorted by key. Что логично, потому что это дерево.но идея со списком мне тоже нравится сделал так, например, когда порядок не важен Код
или так, когда важен Код
тогда сначала установится регистр 0x3c, а потом порядок уже не важен, поэтому это одна мапа. |