我有一个基于QMap<QUuid, CustomObject>
从QAbstractListModel
派生的类,我在 qml 中使用ListView
可视化该类。在我的应用程序运行期间的某个时候,我根据它的QUuid
从此地图中删除了一些项目。当我进行删除时,我想打电话给beginRemoveRows
,以便ListView
收到通知,它的内容正在更改并且需要重新绘制。如何找到适合beginRemoveRows
的索引?
实际上使用QMap
是完全可以的。您只需要找出正确的索引beginIndexRow
,beginRemoveRows
等。例如,查找beginIndexRow
的索引如下所示:
int index = std::distance(myQMap.begin(), myQMap.lowerBound(id));
beginInsertRows(QModelIndex(), index, index);
myQMap[id] = myCustomObject;
endInsertRows();