ModelView【QT】
Model View
Qt 的 Model/View(模型 / 视图)架构 设计,核心思想是 “数据与显示分离”:将数据存储(Model)、用户交互(View)、数据转换(Proxy)拆分为独立组件,通过标准化接口协作
[数据源(SQLite 数据库)] → [源模型(QSqlTableModel)] → [代理模型(QSortFilterProxyModel)] → [视图(QTableView)]
Model 层是 QSqlTableModel
:它是 Qt 提供的 “数据模型”,封装了与 SQLite 的连接和数据操作(比如从数据库读数据、向数据库写数据、同步修改等),为上层提供统一的数据访问接口(相当于 “数据管家”,屏蔽了底层数据库的细节)
View 层是 QTableView
:它是 “视图组件”,只负责 可视化展示数据 和处理用户交互(比如点击表头排序、双击编辑单元格),完全不关心数据 “从哪来、怎么存”。
Model View 优点 ,如果后续从 SQLite 换成 MySQL 或显示方式(如从表格换成树状图)的修改,只需将SQLite 换成 MySQL,无需改动其他部分(如业务逻辑)
常用的 Model 类
标准模型
QStandardItemModel
QStringListModel
QFileSystemModel
数据库模型
QSqlQueryModel
QSqlRelationalTableModel
QSqlTableModel
,负责封装 SQLite 数据库表的 “增删改查” 操作,实现数据与视图的同步
抽象模型
QAbstractItemModel
QAbstractListModel
QAbstractTableModel
代理模型
QSortFilterProxyModel
视图(View)组件
QListView
QTreeView
QTreeView
QTreeView 适合展示明确分类关系的数据,通过层级结构
“父节点→子节点” 的层级形式展示数据(例如 “数学”“英语” 等科目作为顶层父节点,每个科目下包含多个学生子节点)
QColumnView
QTableView
QTreeView