У меня есть QHash элементов, которые я хочу отобразить в QTableView. Итак, мне нужна модель. MyClass имеет внутренний идентификатор, который используется для вставки в карту. Что-то вроде этого:
// when adding a new item
my_super_hash[item->id] = item;
При реализации модели я обнаружил, что все методы в модели говорят об «индексе», который был нажат (или что-то еще...).
Может ли кто-нибудь напомнить мне, как сопоставить QHash и модель? (QHash основан на ключе, а модель основана на индексе).
Вариант 1 – не идеальный
Один из вариантов — создать при запуске список, который сопоставляет индекс с ключом:
int i = 0;
foreach( MyClass* c, my_super_hash )
conversion[i] = c->id
Теперь внутри методов повторной реализации моделей я использую
int key = conversion[index.row()];
MyClass * value = my_super_hash[key];
Эта идея кажется беспорядочной, и я хочу лучшей реализации.