鱼C论坛

 找回密码
 立即注册
查看: 2699|回复: 0

[技术原创] 159 - 模型类(三叉戟) - 【扫盲】

[复制链接]
发表于 2016-11-27 19:56:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 不二如是 于 2016-11-27 20:08 编辑

0.png


模型/视图框架中,模型会提供一个很有牛X的接口:

视图和委托来访问数据。

此接口,使用QAbstractItemModel类来定义。

无论数据是怎样存储在何种底层数据结构中,这个类及其子类都会以层级结构来表示数据。

视图便按照这种约定来访问模型中的数据项,但不会影响数据的显示哈~

视图可以使用任何形式将数据显示出来。

当模型中数据发生变化时,模型会通过信号和槽机制告知与其相关联的视图。

常见的3种模型分别是列表模型(List)、表格模型(Table)、树模型(Tree)

为了确保数据的现实与数据的获取相分离!

Qt引入了模型索引

每一块通过的模型获取的数据都是用一个模型索引来表示。

视图、代理便使用这些索引来请求数据项并显示。

这样,只有模型需要直到怎样获取数据!

模型索引包含了一个指针,指向创建他们的模型,当使用多个模型时避免混淆。

模型索引由QModelIndex类提供,他是对一块数据的临时引用

可以用来检索或者修改模型中的数据。

很简单,因为模型随时可能对内部的结构进行重新组织,这样索引可能会失效,所以:

不需要也不应该存储模型索引


那么你会问了,我要长时间对一块数据进行引用,怎么搞?

很好办啦,你使用QPersistentModelIndex来创建模型索引:

1.png


如果要获得一个数据想的模型索引还要干一件事情:

指定模型的3个属性:

行、列、父项的模型索引

QModelIndex index = model -> index(row , column , parent);



本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 17:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表