【发布时间】:2020-12-04 00:01:15
【问题描述】:
QAbstractItemModel 类有一个方法 QAbstractItemModel::createIndex() 可以创建 QModelIndex。
这个对象是什么时候为每个 QComboBox 项目创建的?
在文档中我们可以找到:
注意:模型索引应立即使用,然后丢弃。在调用更改模型结构或删除项目的模型函数后,您不应依赖索引保持有效。如果您需要随着时间的推移保留模型索引,请使用 QPersistentModelIndex。
所以看起来是临时对象,但是谁创建的呢?是模型,但我没有发现任何迹象表明模型本身在源代码中创建索引,或者视图(小部件)在从模型中读取数据之前创建索引?
QComboBox 如何存储从 Model 读取的值和索引,或者它在每次需要更新数据时读取它?
QComboBox 是如何实际读取数据的,它只是从 0 循环到 rowCount() 并为每个值创建新索引然后使用 data( const QModelIndex &index, int role ) 读取?
【问题讨论】:
标签: qt5 qcombobox qabstractitemmodel qmodelindex