Использование QMap вместо QHash кажется более разумным, как рекомендует Неокс в своем комментарии.
EDIT:
ОК, после внедрения я обнаружил проблемы:
Допустим, у меня есть идентификаторы 100,102,103,105 (101, 104 недоступны), в моей модели будут "дыры".
Что происходит, так это то, что модель имеет 4 элемента, и когда я запрашиваю элемент № 2, QMap :: at (1) вернет NULL. Кажется на практике, 102 будет на # 3. Arg ...: (
РЕДАКТИРОВАТЬ 2:
Я попробовал этот код:
#if 0
return my_super_map.at(index);
#else
int i = 0;
foreach (MyClass *c, my_super_map) {
if (i == index)
return c;
i++;
}
return NULL;
#endif
Хотя это работает, это чертовски медленно. Мне может понадобиться сделать еще одну таблицу перевода, как в оригинальном ответе. (это вызывается внутри метода data (), например, я думал, что значения были кэшированы внутри представления, но я ошибся).