如何从模型视图中删除项目?

时间:2013-07-15 03:30:01

标签: qt qt4

我正在使用QTreeView和QAbstractItemModel来建立视图,其数据也来自树结构。但是当我从树结构(数据源)中删除一个节点时,我发现模型视图不能自动调整自身,它也使用无效指针,我不知道它指向哪个内存块。我不知道如何更新或我需要做些什么来解决这个问题。

1 个答案:

答案 0 :(得分:3)

要从模型中删除数据,请使用beginRemoveRows()endRemoveRows()beginRemoveRows告诉模型您现在将更改基础数据结构。 然后更改结构并在完成后调用endRemoveRows。然后,endRemoveRows将触发通知以更新视图:

beginRemoveRows(QModelIndex(), 0, 0);
m_topLevelNodes.remove(0);
endRemoveRows();

这将删除第一个顶级行(及其子节点),假设模型中的底层结构将顶级树项保留在名为m_topLevelNodes的容器中。