QT 学习笔记 Model/View结构

Model/View基本原理

        将界面组件与所编辑的数据分离开来,又通过数据源的方式连接起来,是处理界面与数据的一种较好的方式。Qt使用Model/View结构来处理这种关系,Model/View的基本结构如图

数据模型

         所有的基于项数据(ItemData)的数据模型(Model)都是基于QAbstractItemModel类的,这个定义了视图组件和代理存取数据的接口。数据无线存储在数据模型里,数据可以是其他类,文件,数据库或任何数据源。Qt中与数据模型相关的几个主要的类的层次结构如图

 

 抽象类是不能直接使用的,需要由子类继承实现。Qt提供了一些模型类用于项数据处理,常见的几

 如果这些现有的模型类无法满足需求,用户可以从 QAbstractItemModel,QabstractListModel,QabstractTableModel继承,生成自己定制的数据模型类。

视图组件

        视图组件(View)就是现实数据摸型的数据的界面组件,Qt提供的视图组件如下

  • QListView:
  • QTreeView:
  • QTableView:
  • QColumnView:
  • QHeaderView:

        视图组件在现实数据时,只需要调用视图类的setModel()函数,为视图组件设置一个数据模型就可以实现视图组件与数据模型之间的关联,在视图组件上的修改将自动保存到关联的数据模型里,一个数据模型可以同时在多个视图组件里显示数据。

        用户Model/View结构的几个视图类直接从QAbstractItemView继承而来,而便利类则从相应的视图类继承而来。

        视图组件类的数据采用单独的数据模型,视图组件不存储数据。便利类则为组件的每个节点或单元格创建一个项(item),用项存储数据,格式设置等,所有便利类没有数据模型,它实际上是用项的方式集成了数据模型的功能。这样就将界面与数据绑定了。所有便利类缺乏对大型数据源进行灵活处理的能力,适用于小型数据的显示和编辑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值