Qt中Model/View中的Model Index是一个类,该类用于定位Model/View中数据模型中的数据。

Model Index是从QAbstractItemModel派生的子类,用于在项视图( item views)、委托(delegates)和选择模型( selection models)使用来定位Model中的数据项(delegates相当于MVC中的C,用于在视图中处理用户的输入,输入可以通过调用model的setData函数保存到真正的数据中)。

模型索引引用模型中的数据项,包含一个指向创建它们的Model的指针,这样可以避免使用多个Model时引起混淆,模型索引包含有定位数据项在模型中的位置所需的所有信息,包括索引位置给定的行和列位置,并且可能还有父索引,这些通过使用row()、column()和parent()来获取,。模型中的每个顶级项目都用一个没有父索引的模型索引来表示——在这种情况下,parent() 将返回一个无效的模型索引,相当于一个用QModelIndex()无参数形式构造的索引。

为了获取相应数据项的模型索引,可以调用QAbstractItemModel.index() ,调用时必须指定Model的三个属性:行数,列数,父项的模型索引。特殊情况下,引用模型中的顶级项时,使用QModelIndex()作为父索引。

QModelIndex对象由模型使用QAbstractItemModel::createIndex() 函数创建。可以使用QModelIndex构造函数构造无效的模型索引。当引用模型中的顶级项时,无效索引通常用作父索引。

model()函数返回索引引用的Model(类型为QAbstractItemModel),child()函数用于访问给定行和列对应索引下保存的子项。sibling()函数用于在模型中遍历与索引相同级别的数据项。

注意:模型索引为数据项提供了临时参照,通过它可以用来提取或修改Model中的数据。模型索引在获得后应该立即使用,由于Model经常会重新组织内部的结构,使得模型索引失效,因此不应保存模型索引。如果需要一个对数据项的长期参照,必须创建一个永久的模型索引。这样会为不断更新的Model信息提供一个参照。临时模型索引由QModelIndex类提供,而永久模型索引则由QPersistentModelIndex类提供。


博客地址:https://blog.csdn.net/LaoYuanPython

老猿Python博客文章目录:https://blog.csdn.net/LaoYuanPython/article/details/98245036

最新文章

  1. 百度地图API 批量添加 带检索功能的信息窗口
  2. 【EF学习笔记10】----------主从表级联操作
  3. 图像处理工具包ImagXpress中如何定义查看器的属性
  4. android开发类似coverflow效果的3d旋转
  5. 使用Jekyll搭建免费的Github Pages个人博客
  6. Spark2.2.0分布式集群安装(StandAlone模式)
  7. java基础笔记(8)----接口
  8. 第二章 初识JSP
  9. R语言学习 第十一篇:日期和时间
  10. 一个简单的例子实现自己的AOP
  11. unittest报告出现dict() -> new empty dictionary错误解决办法
  12. Cordova热更新cordova-hot-code-push
  13. Chart控件的用法
  14. QT中设置窗口背景颜色
  15. C++中的this和Python的self对比
  16. CentOS6.5安装RHadoop
  17. mysql中join后on、where的区别
  18. Oracle扩容日志文件
  19. 【第七章】MySQL数据库备份-物理备份
  20. 快速开发微信小程序

热门文章

  1. Git操作:远程仓库(git remote)的添加、管理和删除
  2. 洛谷日报 & 原来博客(转载)
  3. python之 《zip,lambda, map》
  4. MFC详解
  5. 13Linux之磁盘管理
  6. ceph luminous 新功能之磁盘智能分组
  7. modprobe: FATAL: Module ceph not found解决办法
  8. 丢了ceph.mon.keying解决办法
  9. 【python爬虫】用requests库模拟登陆人人网
  10. IDEA “Cannot resolve symbol” 解决办法