114-Model/View-数据项的索引QModellndex

数据项的索引QModellndex

数据模型中存放着数据,要获取或写入数据,需要知道数据所在的行和列。行和列单独构成一个类称为数据项索引QModelIndex,通过数据项索引可以定位到对应的数据。

由于数据模型可能是一个列表、表格、树或更复杂的结构,所以数据模型的数据索引也会比较复杂。通常用QModelIndex()表示指向数据模型根部的索引这个索引不指向任何数据表示最高层索引。

用数据模型的 index(row,column,parent)表示索引parent(类型是QModelIndex)下的第 row 行第 column 列的数据项索引

  • 例如index_l=index(2,1,QModelIndex())表示根目录下的第 row=2行第 column=1列数据的索引
  • 如果在该数据项下还有子数据项,则index_2=index(1,3,index_1)表示在 index_1下的第row=1行第column=3列数据项的索引,其他情况类推

数据项索引的常用方法如表所示。

  • 用parent()方法可以获得父数据项的索引;
  • 用sibling(row,column)方法,siblingAtColumn(column)方法和 siblingAtRow(row)方法可以获取同级别的 row行 column 列的数据项的索引,
  • 用isValid()方法可以判断索引是否有效;
  • 用row()方法和 column)方法可以获取数据索引所指向的行值和列值;
  • 用flags()方法获取数据项的状态,返回值是 Qt.ItemFlag 的枚举值可能是:
    • Qt.NoltemFlags(没有任何属性)
    • Qt.ItemIsSelectable(可选择)
    • Qt.ItemIsEditable(可编辑)
    • Qt.ItemIsDragEnabled(可拖拽)
    • Qt.ItemIsDropEnabled(可拖放)
    • Qt.ItemIsUserCheckable(可选)
    • Qt.ItemIsEnabled(可激活)
    • Qt.ItemIsAutotristate(由子项的状态决定)
    • Qt.ItemNeverHasChildren禁止有子项)
    • Qt.ItemIsUserTristate(用户可以在3种状态间切换)
QModellndex的方法及参数类型返回值的类型说明
model()QAhstractItemModel获取数据模型
parent()QModelIndex获取父索引
sibling(row:int,column:int)QModelIndex获取同级别的索引
siblingAtColumn(column:int)QModelIndex按列获取同级别的索引
siblingAtRow(row;int)QModelIndex按行获取同级别的索引
row()int获取索引所指向的行值
column()int获取索引所指向的列值
data(role: int=Qt.ItemDataRole)Any获取数据项指定角色的数据
flags()Qt.ItemFlag获取标识
isValid()bool获取索引是否有效
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

士别三日,当挖目相待

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值