导言:
当遇到一个相对复杂的项目软件的时候,处理的数据量相对较大,这时候从软件设计的角度,一般都会考虑运用模型视图的架构。

Qt关于MVC编程组成部分:

大体上,模型、视图架构中众多类可以分为3组:模型、视图和委托。它们之间使用信号和槽来实现通信。

1 模型

所有的模型都基于QAbstractItemModel为数据提供了一个十分灵活的接口来处理各种视图,这些视图可以将数据表现为表格(table)、列表(list)和树(tree)等形式。

QAbstractListModel 和QAbstractTableModel类,提供了一些常见的功能。

Qt提供了一些现成的模型来处理数据项:

QStringListModel 用来存储简单的QString项目列表;

QStandardItemModel管理复杂的树形结构数据项,每一个数据项可以包含任意的数据;

QFileSystemModel提供了本地文件系统和目录的信息;

QSqlQueryModel、QSqlTableModel和QSqlRelationalTableModel用来访问数据库。

如果Qt提供的这些标准的模型无法满足需要,还可以子类QAbstractItemModel、QAbstractListModel 或者QAbstractTableModel来创建自定义的模型。

2 视图

Qt 提供了几种不同类型的视图,

  • QListView将数据项显示为一个列表;

    QTableView将模型中的数据显示在一个表格中;

    QTreeView将模型的数据项显示在 具有层次的列表中。

以上这些类都是基于QAbstractItemView抽象基类的。

3委托

默认的委托实现由QStyledItemDelegate类提供。

一个简单的例子:使用树形和列表两种视图来显示同一个模型的数据

#include <QApplication>
#include <QFileSystemModel>
#include <QTreeView>
#include <QListView>int main(int argc, char *argv[])
{QApplication app(argc, argv);// 创建文件系统模型QFileSystemModel model;// 指定要监视的目录model.setRootPath(QDir::currentPath());// 创建树型视图QTreeView tree;// 为视图指定模型tree.setModel(&model);// 指定根索引tree.setRootIndex(model.index(QDir::currentPath()));// 创建列表视图QListView list;list.setModel(&model);list.setRootIndex(model.index(QDir::currentPath()));tree.show();list.show();return app.exec();
}

输出:

ps:
有关编程的学习,编程的理论框架必须要建立起来,同时需要一定量的实例,这样才能融会贯通。

Qt 模型视图编程的简单实例相关推荐

  1. Qt 模型视图编程之表头设置

    背景 Qt 模型视图编程中模型定义了标准接口对数据进行访问,可根据需求继承对应的抽象模型类来实现自定义的数据模型.一个基本的数据模型至少要实现以下虚函数: ①.rowCount:行数,返回要显示多少行 ...

  2. Qt - 模型/视图编程(MVC编程自定义模型)

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

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

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

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

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

  5. Qt模型视图中的委托

    文章目录 1 初探QT模型视图中的委托 2 自定义委托 3 深度解析视图与委托 3.1 实例1:自定义视图显示方式 3.2 实例2:自定义视图显示方式提升用户体验 1 初探QT模型视图中的委托 首先来 ...

  6. Qt 模型视图框架解读之模型

    Qt 模型视图框架 前后阅读的好几遍,要不是项目中需要处理一些相对比较多的数据,这部分内容估计不会去急着去理解. 首先来了解下什么是模型和视图框架吧: 一般地:MVC 设计模式包括三个元素: 表示数据 ...

  7. 后盾网lavarel视频项目---模型一对多关联简单实例

    后盾网lavarel视频项目---模型一对多关联简单实例 一.总结 一句话总结: 在模型中定义一个方法来设置一对多关联:return $this->hasMany(Video::class); ...

  8. Qt模型视图框架:QListView

    一.描述 QListView 将存储在模型中的项目呈现为简单的非分层列表或图标集合.此视图不显示水平或垂直标题. QStandardItemModel * model = new QStandardI ...

  9. QT学习笔记14(Qt模型视图结构)

    一.基础知识 1.MVC设计模式:是一种与用户界面相关的设计模式,通过此模式,可以有效的分离数据和用户界面. MVC包括三个要素: 表示数据的模型(Model):应用程序的对象 表示用户界面的视图(V ...

最新文章

  1. 微信小程序一键创建js,json,wxml,wxss
  2. 竞赛提升:必知必会的21篇论文!
  3. 【每日一算法】搜索插入位置
  4. python读取中文txt文本-python读取中文txt文本的方法
  5. openssh设置免密码登录远程服务器
  6. python - 函数
  7. setProperty will trigger ui re-render 南京同事提的问题
  8. 切割 字符串_web前端如何使用字符串
  9. mysql主从之slave-skip-errors和sql_slave_skip_counter
  10. PHP设计模式——抽象工厂
  11. python 虚拟环境 mac_Mac下安装Python虚拟环境Virtualenv
  12. 数据库基础-update语句详解
  13. ElasticSearch中minimum_should_match详细介绍
  14. java 导出word换行_POI写Word换行
  15. js中~~和 | 的使用
  16. 中文情感极性词典 NTUSD
  17. ArcGIS基础知识之shape文件的构成
  18. js网页繁体简体转换(备忘)
  19. arduino tft 方向_arduino 控制TFT液晶显示屏,在屏幕上画了四个按键,如何检测是否被按下和释放呢?...
  20. 双重差分模型python包_什么是双重差分模型(difference-in-differences model)?

热门文章

  1. vtk读取文件并显示的几种方法
  2. MATLAB报错“Exception in thread FileDecorationCache request queue java.lang.OutOfMemoryError: Java “
  3. [云炬创业管理笔记]第二章成为创业者测试6
  4. 科大星云诗社动态20210310
  5. 云炬随笔20211016(4)
  6. Fill in blank -Thermal experiment theory and technology2018-01-06
  7. 台湾大学林轩田机器学习基石课程学习笔记8 -- Noise and Error
  8. 域名与转发服务器ip指向不一致_域名映射到家庭网络(无公网IP)
  9. 深度学习CTR模型最全演化图谱 [王喆观点]
  10. 有监督回归:鲁棒学习