Qt 模型视图编程的简单实例
导言:
当遇到一个相对复杂的项目软件的时候,处理的数据量相对较大,这时候从软件设计的角度,一般都会考虑运用模型视图的架构。
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 模型视图编程的简单实例相关推荐
- Qt 模型视图编程之表头设置
背景 Qt 模型视图编程中模型定义了标准接口对数据进行访问,可根据需求继承对应的抽象模型类来实现自定义的数据模型.一个基本的数据模型至少要实现以下虚函数: ①.rowCount:行数,返回要显示多少行 ...
- Qt - 模型/视图编程(MVC编程自定义模型)
模型/视图编程 Qt中的模型/视图架构用来实现大量的数据存储.处理及显示.MVC(Model-View-Controller)包括了3个组件:模型(Model)是应用对象,用来表示数据:视图(View ...
- QT Model/View 编程:MVC模型视图编程:实例实现(二)
目录 样例001:现有模型中使用视图Using views with an existing model 样例002:使用模型索引 样例003:使用模型 样例004:使用模型的多个视图 样例005:委 ...
- Qt - MVC模型/视图编程
MVC模型/视图编程 Qt中的模型/视图架构用来实现大量的数据存储.处理及显示. MVC(Model-View-Controller)包括了3个组件: 模型(Model)是应用对象,用来表示数据: 视 ...
- Qt模型视图中的委托
文章目录 1 初探QT模型视图中的委托 2 自定义委托 3 深度解析视图与委托 3.1 实例1:自定义视图显示方式 3.2 实例2:自定义视图显示方式提升用户体验 1 初探QT模型视图中的委托 首先来 ...
- Qt 模型视图框架解读之模型
Qt 模型视图框架 前后阅读的好几遍,要不是项目中需要处理一些相对比较多的数据,这部分内容估计不会去急着去理解. 首先来了解下什么是模型和视图框架吧: 一般地:MVC 设计模式包括三个元素: 表示数据 ...
- 后盾网lavarel视频项目---模型一对多关联简单实例
后盾网lavarel视频项目---模型一对多关联简单实例 一.总结 一句话总结: 在模型中定义一个方法来设置一对多关联:return $this->hasMany(Video::class); ...
- Qt模型视图框架:QListView
一.描述 QListView 将存储在模型中的项目呈现为简单的非分层列表或图标集合.此视图不显示水平或垂直标题. QStandardItemModel * model = new QStandardI ...
- QT学习笔记14(Qt模型视图结构)
一.基础知识 1.MVC设计模式:是一种与用户界面相关的设计模式,通过此模式,可以有效的分离数据和用户界面. MVC包括三个要素: 表示数据的模型(Model):应用程序的对象 表示用户界面的视图(V ...
最新文章
- 微信小程序一键创建js,json,wxml,wxss
- 竞赛提升:必知必会的21篇论文!
- 【每日一算法】搜索插入位置
- python读取中文txt文本-python读取中文txt文本的方法
- openssh设置免密码登录远程服务器
- python - 函数
- setProperty will trigger ui re-render 南京同事提的问题
- 切割 字符串_web前端如何使用字符串
- mysql主从之slave-skip-errors和sql_slave_skip_counter
- PHP设计模式——抽象工厂
- python 虚拟环境 mac_Mac下安装Python虚拟环境Virtualenv
- 数据库基础-update语句详解
- ElasticSearch中minimum_should_match详细介绍
- java 导出word换行_POI写Word换行
- js中~~和 | 的使用
- 中文情感极性词典 NTUSD
- ArcGIS基础知识之shape文件的构成
- js网页繁体简体转换(备忘)
- arduino tft 方向_arduino 控制TFT液晶显示屏,在屏幕上画了四个按键,如何检测是否被按下和释放呢?...
- 双重差分模型python包_什么是双重差分模型(difference-in-differences model)?
热门文章
- vtk读取文件并显示的几种方法
- MATLAB报错“Exception in thread FileDecorationCache request queue java.lang.OutOfMemoryError: Java “
- [云炬创业管理笔记]第二章成为创业者测试6
- 科大星云诗社动态20210310
- 云炬随笔20211016(4)
- Fill in blank -Thermal experiment theory and technology2018-01-06
- 台湾大学林轩田机器学习基石课程学习笔记8 -- Noise and Error
- 域名与转发服务器ip指向不一致_域名映射到家庭网络(无公网IP)
- 深度学习CTR模型最全演化图谱 [王喆观点]
- 有监督回归:鲁棒学习