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