Qt的模型/视图结构分为三部分:模型(Model)、视图(View)和代理(Delegate)。其中,模型与数据源通信,并为其他部件提供接口;而视图从模型中获得用来引用数据条目的模型索引(Model Index)。在视图中,代理负责绘制数据条目,当编辑条目时,代理和模型直接进行通信。模型/视图/代理之间通过信号和槽进行通信,如图所示:

(1)数据发生改变时,模型发出信号通知视图。
(2)用户对界面进行操作,视图发出信号。
(3)代理发出信号告知模型和视图编辑器目前的状态。

一、模型

InterView框架中的所有模型都基于抽象基类QAbstractItemModel,此类由QProxyModel、QAbstractListModel、QAbstractTableModel、QAbstractProxyModel、QDirModel、QFileSystemModel、QHelpContentModel和QStandardItemModel类继承。其中,QAbstractListModel类和QAbstract TableModel类是列表和表格模型的抽象基类,如果需要实现列表或表格模型,则应从这两个类继承。完成QStringList存储的QStringListModel类继承自QAbstractListModel类,而与数据库有关的QSqlQueryModel类继承自QAbstractTableModel类;QAbstractProxyModel类是代理模型的抽象类;QDirModel类是文件和目录的存储模型。

二、视图(View)

InterView框架中的所有视图都基于抽象基类QAbstractItemView,此类由QColumnView、QHeaderView、QListView、QTableView和QTreeView类继承。其中,QListView类由QUndoView类和QListWidget类继承;QTableView类由QTableWidget类继承;QTreeView类由QTreeWidget类继承。而QListWidget类、QTableWidget类和QTreeWidget类实际上已经包含了数据,是模型/视图集成在一起的类。

三、代理(Delegate)

InterView框架中的所有代理都基于抽象基类QAbstractItemDelegate,此类由QItemDelegate和 QStyledItemDelegate类继承。其中,QItemDelegate类由表示数据库中关系代理的QSqlRelationalDelegate类继承。

QT学习:模型/视图基本概念相关推荐

  1. Qt中模型/视图结构

    8.1 概述 MVC设计模式是起源于Smalltalk的一种与用户界面相关的设计模式.通过使用此模型,可以有效地分离数据和用户界面.MVC设计模式包括三个元素:表示数据的模型 (Model).表示用户 ...

  2. Qt5入门学习——模型/视图结构

    文章目录 概述 基本概念 简单文件目录浏览器[简单示例] 模型(Model) 自定义模型[示例] 视图(View) 表格数据显示[示例] 代理(Delegate) 利用Delegate设计表格控件[示 ...

  3. [转载]Qt之模型/视图(自定义风格)

    原文地址:Qt之模型/视图(自定义风格)作者:一去丶二三里 关于自定义风格是针对视图与委托而言的,使用事件与QSS都可以进行处理,今天关于美化的细节讲解一下. 先看下图: 先撇开界面的美观性(萝卜青菜 ...

  4. [转载]Qt之模型/视图(自定义风格)_vortex_新浪博客

    原文地址:Qt之模型/视图(自定义风格)作者:一去丶二三里 关于自定义风格是针对视图与委托而言的,使用事件与QSS都可以进行处理,今天关于美化的细节讲解一下. 先看下图: 先撇开界面的美观性(萝卜青菜 ...

  5. [转载]Qt之模型/视图(实时更新数据)

    原文地址:Qt之模型/视图(实时更新数据)作者:一去丶二三里 上两节简单介绍了Qt中对于模型/视图的编程,大部分助手里说的很清楚了,现在就开始实战部分吧! 在实际应用中,视图展示的数据往往并非一成不变 ...

  6. [转载]Qt之模型/视图(实时更新数据)_vortex_新浪博客

    原文地址:Qt之模型/视图(实时更新数据)作者:一去丶二三里 上两节简单介绍了Qt中对于模型/视图的编程,大部分助手里说的很清楚了,现在就开始实战部分吧! 在实际应用中,视图展示的数据往往并非一成不变 ...

  7. Qt - MVC模型/视图编程

    MVC模型/视图编程 Qt中的模型/视图架构用来实现大量的数据存储.处理及显示. MVC(Model-View-Controller)包括了3个组件: 模型(Model)是应用对象,用来表示数据: 视 ...

  8. 【Qt】模型-视图-代理(Model-View-Delegate)

    Qt英文手册:https://qmlbook.github.io/assets/qt5_cadaques.pdf 文章目录 一.概念(Concept) 二.基础模型 三.动态视图(Dynamic Vi ...

  9. 【Qt】模型/视图结构和数据绑定控件

    模型/视图结构 模型/视图是指处理数据的模型和向用户提供GUI的视图,这是从GUI分离数据的一种结构,又称为MVC(Model-View-Controller). 模型 QAbstractItemMo ...

最新文章

  1. 论文笔记之:Deep Attributes Driven Multi-Camera Person Re-identification
  2. Docker核心技术之联合文件系统
  3. GitChat · 前端 | Vue 组件库实践和设计
  4. [Spark]如何设置使得spark程序不输出 INFO级别的内容
  5. Zookeeeper开源客户端curator watcherAPI的使用
  6. 计算机通信发展史,通信技术发展史
  7. Windows安装多个不同版本谷歌chrome浏览器
  8. 基于VUMAT复合材料夹层结构冲击仿真
  9. 移动硬盘计算机无法打开硬盘,移动硬盘无法访问,详细教您移动硬盘无法访问怎么办...
  10. java520.1314表白_告白日表白公式 520.1314 临沂人知道怎么玩吗
  11. mapbox-gl加载带环境贴图白模(视频)
  12. 浅谈角色换装功能--前置篇【骨骼,蒙皮,动作】
  13. SQL SERVER 2000 企业管理器免安装方法
  14. Vue中qs插件的使用
  15. 唉!一 28 岁程序员因新冠离世。。。
  16. 云原生管理平台如何掀起“云网联动”新篇章
  17. 途胜怎样与android手机互联,汽车知识普及:现代途胜车载蓝牙怎么连接 途胜手机互联映射教程...
  18. 虚拟机ping外网连接失败解决方法
  19. 音视频流媒体开发—H264 编解码协议
  20. 完美解决Error:Failed to open zip file. Gradle‘s dependency cache may be corrupt (this sometimes occurs a

热门文章

  1. 北京招聘 | 澜舟科技招聘NLP工程师、NLP研究员、产品项目经理
  2. PaddlePaddle版Flappy-Bird—使用DQN算法实现游戏智能
  3. 来不及想标题了,我要去打包收藏了 | 本周值得读
  4. HDU2091 空心三角形 水题
  5. php基础标签大全,HTML基础之HTML常用标签
  6. java按位取反“~“运算符,负数右移
  7. 云原生系列「五」我为啥又看上了serviceMesh?
  8. FineReport——设计时无相关数据库查看权限,使用对应数据库解决方案
  9. LeetCode 7 整数反转
  10. JAVA——后端Vue动态路由配置类JavaBean封装