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类型处理

大数据的性能优化

模型视图类

相关示例

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值