Qt 模型视图编程

模型视图介绍

模型视图架构

使用模型和视图

Qt中包含的两个模型

以已有的模型使用视图

模型类

基本概念

使用模型索引

延伸阅读

视图类

基本概念

使用现存视图

项选择处理

委托类

使用现存的委托

一个简单的委托

视图项的选中处理

概念

使用一个选择模型

创建一个新模型

  模型/视图间功能的分离允许利用现有视图创建模型。该方式让我们能从多种使用标准GUI组件的数据源中展示数据,如QListView,QTableView,和QTreeView。
  QAbstractItemModel提供了一个接口,它在层次结构中整理信息足够灵活,允许数据插入,删除,修改,或以某种方式排序的可能性。它还提供了支持拖拽操作。
QAbstractListModel和QAbstractTableModel类提供支持简单非层次数据结构的接口,对简单的list和table models,更容易作为起始点使用。
  在本节中,我们创建一个简单的只读模型探索模型/视图的体系结构的基本原理。在后续章节里,我们改编这个简单的模型,这样项可以被用户修改。
更复杂的模型类子,可参考简单树模型的例子。
更多QAbstractItemModel子类化的要求描述参考模型子类化文档章节。

设计模型

 当对现有的数据结构创建一个新的模型时,考虑使用哪种类型的模型提供接口来映射数据是很重要的。如果数据结构可以表示为一个列表或表的项,你可以子类QAbstractListModel或QAbstractTableModel,因为这些类提供许多功能合适的默认实现。
 然而,如果底层数据结构只能由分层树结构表示,有必要子类化QAbstractItemModel。这种方法在简单树模型的例子中被使用。
在本节中,我们实现一个基于一个字符串列表的简单模型,所以QAbstractListModel提供了理想的基类用于构建。
 无论底层数据结构采取何种形式,在特化的模型中添加标准QAbstractItemModel API通常是一个好主意,可以更自然地访问底层数据结构。这使它更易于以数据填充模型,但仍然使其他通用模型/视图组件与它使用标准的API进行交互。下面描述的模型为此提供了一个自定义构造函数。

一个只读模型示例

一个可编辑模型

下一步

便利的项视图类

List widgets

Tree widgets

Table widgets

共有特性

使用项目视图的拖放操作

使用便利的视图

使用模型视图类

代理模型

使用代理模型

自定义代理模型

模型子类化参考

项数据处理

只读访问

导航及模型索引的创建

拖放支持和MIME类型处理

大数据的性能优化

模型视图类

相关示例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值