如何在基于 QMap 的 QAbstractListModel 中找到特定行的索引?

How to find the index of a specific row in QMap based QAbstractListModel?

我有一个 class 派生自 QAbstractListModel 基于 QMap<QUuid, CustomObject> 我在 qml 中用 ListView 可视化。在我申请 运行 期间的某个时候,我根据 QUuid 从这张地图中删除了一些项目。当我进行删除操作时,我想调用 beginRemoveRows 以便通知 ListView 它的内容正在更改并且需要重新绘制自身。如何找到 beginRemoveRows 的正确索引?

实际上使用 QMap 完全没问题。您只需要找到正确的索引 beginIndexRowbeginRemoveRows 等。例如,找到 beginIndexRow 的索引看起来像这样:

int index = std::distance(myQMap.begin(), myQMap.lowerBound(id));
beginInsertRows(QModelIndex(), index, index);
myQMap[id] = myCustomObject;
endInsertRows();