• PyQt学习随笔:Qt中Model/View中的Model Index


    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)
    (转)远程线程DEMO
    VCL 中TList源码分析
    MVC Controller向View传值(ViewData与ViewBag)
    ASP.NET MVC 下拉框的传值的两种方式(第二种方式未完成)
    将数据在[Excel]和[任何数据源]之间导入导出_可临时保存查询结果
    服务器控件之二
    关闭窗口动画,加速窗口
    让XP控制台字符编码在UTF8与GBK之间切换
    WCF应用的编码实现
  • 原文地址:https://www.cnblogs.com/LaoYuanPython/p/11931719.html
Copyright © 2020-2023  润新知