Qt -获得一个没有视图的QModelIndex

Qt - Getting a QModelIndex without a View

本文关键字:一个 视图 QModelIndex Qt      更新时间:2023-10-16

我有一个QAbstractModel,它基本上是从Qt EditableTreeModel示例派生的树结构。我对它进行了调整,以显示包含抽象数据对象的树形结构,并且只能以编程方式更新,而不能由用户通过视图进行更新。

问题是在需要刷新不在根的部分时确定QModelIndex。Qt似乎只提供与视图事件(如点击)相关的QModelIndexes。我的模型可以很容易地找到它需要刷新的子部分,但似乎没有独立于视图的方法来获取insertRows、removeRows等所需的QModelIndex。

这个问题有一个回答建议通过数据项迭代来找到QModelIndex,但是我看不到一种方法来独立地定义QPersistentModelIndex的根(因为这表明您不能仅为根子节点使用默认的QModelIndex构造函数)。

所以,简而言之,我如何在不需要View相关事件的情况下找到QModelIndex,或者如何以编程方式将根定义为QPersistentModelIndex,同样不需要View或用户输入。

或者,是否可以选择使用模型和非可视化视图来启用QModelIndexes的获取?我需要模型是最新的,无论视图是否显示。

欢呼所有的

您可以使用QAbstractItemModel::index(int row, int column, const QModelIndex & parent)直接从您的模型获得QModelIndex。如果您想查找不在根目录的索引,请使用parent参数。