我有一个要在 QTableView 中显示的项目的 QHash。所以我需要一个模型。MyClass 有一个内部 id,用于插入到地图中。像这样的东西:
// 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];
这个想法看起来很乱,我想要一个更好的实现。