我正在使用QTreeView和QAbstractItemModel来建立视图,其数据也来自树结构。但是当我从树结构(数据源)中删除一个节点时,我发现模型视图不能自动调整自身,它也使用无效指针,我不知道它指向哪个内存块。我不知道如何更新或我需要做些什么来解决这个问题。
答案 0 :(得分:3)
要从模型中删除数据,请使用beginRemoveRows()
和endRemoveRows()
。
beginRemoveRows
告诉模型您现在将更改基础数据结构。
然后更改结构并在完成后调用endRemoveRows
。然后,endRemoveRows将触发通知以更新视图:
beginRemoveRows(QModelIndex(), 0, 0);
m_topLevelNodes.remove(0);
endRemoveRows();
这将删除第一个顶级行(及其子节点),假设模型中的底层结构将顶级树项保留在名为m_topLevelNodes
的容器中。