Model/View结构(整理自<Qt5.9 C++开发指南>)
数据模型
数据不仅可以存储在数据模型中,数据可以是其他类,文件,数据库或任何数据源.
视图组件
那些带View的类; 在显示数据时,调用setModel()函数,为自己设置一个数据模型,实现组件和数据之间的交互.一个数据模型可以同时在多个视图组件中显示数据. 视图组件类的数据采用单独的数据模型,视图组件本身不存储数据. 而便利类,就是那些Widget类,为组件的每个节点或单元格创建一个项item,用项来存储数据,格式设置等,这样界面和数据绑定了,这种类只能使用与小型数据
代理
代理是在视图组件上为编辑数据提供编辑器,缺省的使用QLineEdit编辑器.QStyledItemDelegate是Qt的视图组件缺省使用的代理类.如果只输入整型数,使用QSpinBox更恰当;如果从把列表中选择数据,使用QComboBox更好,这时需要从QStyledItemDelegate继承.
在Model/View中,数据模型为视图组件和代理提供存取数据的标准接口.所有的数据模型类都是从QAbstractItemModel继承而来,不管底层的数据结构怎么组织数据,QAbstractItemModel的子类都以 表格 的层次结构来表示数据.
Model/View的一些概念.
不管数据模型的表现形式是怎样的,它存储数据的基本单元都是项(item),每个项有一个行号,列号和父项.
为了保证数据的表示和数据存储方式隔离,数据模型中引入了模型索引的概念,通过数据模型存取的每个数据都有一个模型索引,组件和代理都通过模型索引来获取数据.QModelIndex下的对象时临时的,如果要用持久性的模型索引,则要使用QPersisentModelIndex类.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架