Qt模型视图结构

一.模型视图介绍   

 1.Model/View(模型/视图结构)  视图(View)是显示和编辑数据的界面组件,
    模型(Model)是视图和原始数据之间的接口

    2.视图组件有:QListView QTreeView QTableView,QColumnView,QHeaderView
    模型组件有:QStringListModel,QStandardItemModel

    3.Model/View结构

视图或视图组件(View):视图从数据模型获取每个数据项模型索引,通过模型索引获取数据,然后为界面组件提供显示数据。

模型或模型数据与实际数据通信,并为视图组件提供数据。

代理(Delegate):可以让用户定制数据的界面显示和编辑方式。

模型,视图和代理之间使用信号和槽通信。

数据模型:所有基于项数据(Item data)的数据模型(Model)都是基于QAbstractItemModel类的)此类定义视图组件和代理存取数据的接口。

QSqlRelationTableMode:关系型数据表

QSqlTableModel:数据库的一个数据表

QSqlQueryModel:QSqlQueryModel封装了执行SELECT语句从数据库查询数据的功能,但是QSqlQueryModel只能作为只读数据源使用,不可以编辑数据

二.模型视图的优点

1.一个Model可以映射多个View,可以以不同的方式查看数据同一份数据

2.如果底层数据源的存储改变了,只需要处理Model

给一个例子显示文件夹目录:

    m_fileModel = new QFileSystemModel(this);
    m_fileModel->setRootPath(QDir::currentPath());

    ui->treeView->setModel(m_fileModel);
QFileSystemModel *m_fileModel;//定义数据模型变量

委托(Delegates)

委托类负责显示数据项,创建与管理编辑器对象,以对数据项进行编辑。视图负责绘制整体结构,不会绘制每个数据项。每个视图对象会指向一个默认的委托对象。

一.模型(Model)

为了将以上(List,Table,Tree)三种结构统一起来,Model/View框架引入了“不可见根”的概念。对于列表模型,所有行的数据项都是这个不可见根的子节点。对于表格模型,所有行、所有列的数据项都是这个不可见根的子节点。对于树模型,位于最顶层的那些数据项(可能包含若干行、若行列)是这个不可见根的子节点。

对于列表或者表格结构的模型,视图对象可以简单地使用行号,列号来访问模型中的某个数据项。对于树状结构的模型,需要使用"索引"来定位也给数据项。

1.角色与数据子项

每个数据项会存放多个数据子项。其中一些是应用程序本身需要处理的数据,另外一些是Model/View框架中其他部分(比如视图对象、委托对象等)需要处理的。视图对象展示的内容为DisplayRole角色。

                                                通用的角色以及对应数据子项的功能与类型

                                                  和数据项外观相关的角色

2.索引 

QModelIndex含有的信息:1.行号,列号  2.一个指针  指向数据集中的一个数据项

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值