目录:

(一) Qt Model/View 的简单说明 、预定义模型

(二)使用预定义模型 QstringListModel例子

(三)使用预定义模型QDirModel的例子

(四)Qt实现自定义模型基于QAbstractTableModel

(五)Qt实现自定义模型基于QAbstractItemModel

(六) Qt实现自定义委托 QDelegate

(一)使用Qt Model/View的好处

1、利用 Qt 的模型 / 视图架构,我们可以只从模型中获取实际在视图中显示所需要的数据。这样在处理非常大的数据集的时候,可以更加快速,而不至于降低性能。通过把一个模型注册到两个或多个视图,就可以让用户使用不同的方式查看数据以及和数据交互。 Qt 对于多个视图会自动保持同步,从而使对一个视图的改变会影响到全部视图。

2、模型 / 视图架构的另外一个好处是:如果决定改变底层数据集的存储方式,只需要修改模型,而视图仍能够继续正常工作。

(二)预定义模型

为了充分使用Qt 模型 / 视图的好处,我们不想再采取 Qt 以前版本中的项视图简便类 QListWidget、 QTableWidget、 QTreeWidget。它们需要读取要被设置到一个项视图窗口部件中的所有数据、使用项对象呈现数据元素并且回写数据源。

Qt4使用预定义模型 划线的是Qt4.7 中已经不再推介的 Model 类

QStringListModel

用于存储简单的字符串列表。

QStandardItemModel

存储任意的分层次的数据,管理复杂的树型结构数据项,每项都可以包含任意数据。

QDirModel(最新版已经用QfileSystemModel代替这个类了)

封装本地文件系统

QSqlQueryModel

封装一个SQL数据集

QSqlTableModel

封装一个SQL表

QSqlRelationTableModel

利用外键封装一个SQL表

QSortFileterProxyModel

排序和/或筛选另一个模型

假如这些标准Model不满足你的需要,你应该子类化QAbstractItemModel,QAbstractListModel或是QAbstractTableModel来定制。

(三)视图

Qt中视图类的继承关系如下图

(三)委托Delegate

Qt中委托的继承关系见下图

(一) Qt Model/View 的简单说明相关推荐

  1. Qt Model/View 学习(4) - 实现自己的QAbstractTableModel类(支持显示与修改)

    目录 0. 前言 1. Data设计 2. Model类设计 2.1 数据显示与对齐.字体修改 2.2 数据修改 3. 小结 0. 前言 可算到了这一篇了! 上一篇文章中把Qt::ItemDataRo ...

  2. Qt Model/View(MVD)模型分析

           最近在看Qt的Model/View Framework,在网上搜了搜,好像中文的除了几篇翻译没有什么有价值的文章.E文的除了Qt的官方介绍,其它文章也很少.看到一个老外在blog中写道M ...

  3. QT Model/View 编程:MVC模型视图编程:实例实现(二)

    目录 样例001:现有模型中使用视图Using views with an existing model 样例002:使用模型索引 样例003:使用模型 样例004:使用模型的多个视图 样例005:委 ...

  4. Qt Model/View 学习笔记 (四)

     创建新的Models 介绍 model/view组件之间功能的分离,允许创建model利用现成的views.这也可以使用标准的功能 图形用户接口组件像QListView,QTableView和Q ...

  5. Qt Model/View编程介绍

    Qt中包含了一系列的项视图类,它们使用model/view的架构去管理数据之间的关系以及它们被展示给用户的方式.这种由这种架构引进的功能分离特性给了开发者很大的灵活性去自定义自己的展示方式,并且提供了 ...

  6. Qt Model/View教程

    修正版已转移到 Qt中文文档 目录 修正版已转移到 [Qt中文文档](https://www.qtdoc.cn/Src/M/Model_View_Tutorial/Model_View_Tutoria ...

  7. Qt Model/View/Delegate浅谈 - QAbstractListModel

    为什么80%的码农都做不了架构师?>>>    待补充... ##子类化 当子类化QAbstractListModel时,必须提供rowCount()和data()这2个函数的实现, ...

  8. 【QT Model/View】QTableView中使用委托实现表格中插入箭头

    一.应用场景 在QTableView表格中,右键插入一行数据,需要在表格上标记待插入的位置,插入完成后标记消除 二.源码实现 箭头代理继承QItemDelegate,重写paint事件,画出箭头形状 ...

  9. (六)Qt Delgate的使用 简单说明

    (一) Qt Model/View 的简单说明 .预定义模型 (二)使用预定义模型 QstringListModel例子 (三)使用预定义模型QDirModel的例子 (四)Qt实现自定义模型基于QA ...

最新文章

  1. 【12.16】VC++调用Word OLE进行自动化生成报表
  2. 依次输入表(30,15,28,20,24,10,68,35,50)中的元素,生成一棵平衡的二叉排序树。请画出构造过程,并在其中注明每一次平衡化的类型(LL型、RR型、LR型、RL型)
  3. 大动作!北京大学成立新系!
  4. linux 对象 调出r_【转】Linux - chown 中的 -R 参数
  5. 区块链/比特币基础知识
  6. truncate(can)
  7. 问答项目---登陆验证码点击切换及异步验证验证码
  8. python基础:os.path的相关操作
  9. jQuery height()、innerHeight()、outerHeight()函数的区别详解
  10. ubuntu批量创建文件夹
  11. spring5.0学习笔记5
  12. Ubuntu GCC编译器升级
  13. win7网络改局域网计算机名,教你win7局域网设置方法
  14. ASP.NET Core 运行原理解剖[2]-Hosting补充之配置介绍
  15. Asp.net 周旭龙 系列总结
  16. Win系统 - 该扩展程序并未列在Chrome应用商店中怎么样办?
  17. css hack *html,css hack 大全 各个浏览器的css
  18. 用R对Twitter用户的编程语言语义分析
  19. linux io apic,linux-kernel – IO-APIC级别与PCI-MSI-X之间的差异
  20. TSF微服务治理实战系列(二)——服务路由

热门文章

  1. java 容器 List
  2. kettle组件-应用
  3. java面试宝典2019_Java面试宝典2019完整版.doc
  4. raster | R中的栅格操作符(下)[翻译]
  5. java label 加图片吗_UILabel里面加图片
  6. mysql useunicode_jdbc连接mysql 为什么在连接时已经这样设置了 ?useUnicode=truecharacterEncodin...
  7. 计算机重启是什么原因,电脑自动重启是什么原因
  8. 三十好几的程序员被领导责骂,只能到厕所痛哭!
  9. web前端开发面临挑战有哪些?
  10. 畅易阁老是显示服务器忙,畅易阁全服开放 盘点天龙玩家卖号的几大原因