Я написал модель на основе QListModel для доступа к данным, хранящимся в QMap. QMap гарантированно будет отсортирован. Таким образом, преобразование из QMap::iterator или const_iterator в int должно быть возможным и разумным.
На данный момент я уменьшаю итератор и увеличиваю переменную счетчика:
QVariantMap::iterator it = m_data.upperBound(name); //or any other iterator
int pos = 0;
for (;it != m_data.begin();it--)
pos++;
//now pos contains the position of the entry at index in the map
Кажется, для некоторых структур данных определено int operator-(iterator)
, позволяющее int pos = it - m_data.begin();
есть ли что-то подобное для QMap?