马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 不二如是 于 2016-11-27 20:08 编辑
在模型/视图框架中,模型会提供一个很有牛X的接口:
供视图和委托来访问数据。
此接口,使用QAbstractItemModel类来定义。
无论数据是怎样存储在何种底层数据结构中,这个类及其子类都会以层级结构来表示数据。
视图便按照这种约定来访问模型中的数据项,但不会影响数据的显示哈~
视图可以使用任何形式将数据显示出来。
当模型中数据发生变化时,模型会通过信号和槽机制告知与其相关联的视图。
常见的3种模型分别是列表模型(List)、表格模型(Table)、树模型(Tree)
为了确保数据的现实与数据的获取相分离!
Qt引入了模型索引
每一块通过的模型获取的数据都是用一个模型索引来表示。
视图、代理便使用这些索引来请求数据项并显示。
这样,只有模型需要直到怎样获取数据!
模型索引包含了一个指针,指向创建他们的模型,当使用多个模型时避免混淆。
模型索引由QModelIndex类提供,他是对一块数据的临时引用。
可以用来检索或者修改模型中的数据。
很简单,因为模型随时可能对内部的结构进行重新组织,这样索引可能会失效,所以:
不需要也不应该存储模型索引
那么你会问了,我要长时间对一块数据进行引用,怎么搞?
很好办啦,你使用QPersistentModelIndex来创建模型索引:
如果要获得一个数据想的模型索引还要干一件事情:
指定模型的3个属性:
行、列、父项的模型索引
QModelIndex index = model -> index(row , column , parent);
|