MVC 结构
Model 处理数据逻辑和程序运行状态。
View 则只负责显示。
Controller 通常负责处理用户交互的部分,从视图读取数据与用户输入,并向模型发送数据;这里顺便提一下,在Qt里面我们并没有Controller的概念,而是Delegate(委托),意义很明显:控制器委托模型来处理数据,模型委托控制器来做数据的交互。model将数据传给delegate,委托它进行一些处理后转发给View进行显示,这些处理当然包括一些数据类型的转换、可读写属性的过滤和判定、绘制样式的控制等等
结构图:
详细解释:
数据:实际的数据,如数据库的一个数据表或SQL查询结果,内存中的一个 StringList,或磁盘文件结构等。
Model:与实际数据通信,并为视图组件提供数据接口。setData.
View:屏幕上的界面组件,视图从数据模型获得每个数据项的模型索引(model index),通过模型索引获取数据。setmodel.
代理:定制数据的界面显示和编辑方式。在标准的视图组件中,代理功能显示一个数据;当数据被编辑时,提供一个编辑器,一般是QLineEdit。
原文链接:http://c.biancheng.net/view/1864.html
https://blog.csdn.net/u012209790/article/details/54755340
源码在线查看:https://code.woboq.org/qt5/
模型,视图和代理之间使用信号和槽通信。
view 里面包含model 和代理,为成员变量。
代理会依赖model
- 数据发生改变时,模型发出信号通知视图。
- 用户对界面进行操作,视图发生信号。
- 代理发出信号告知模型和视图编辑器目前的状态。
Model
常见数据模型:
继承关系:
具体介绍
模型索引:
用途:视图和代理提供存取数据的标准接口。
获取:
目前包括三种形式:
项的角色:一个项可以有多个角色,根据角色选择其中的数据。
View
继承关系:
Qlistwidget等称为便利类,缺乏对大型数据灵活处理的能力,适用于小型数据的显示和编辑。其为每个节点创建了一个item。
Delegate
QAbstraceItemDelegate是所有代理类的基类。
自定义代理:
使用:第二列,使用delegate(实例对象)代理。
ui->tableView->setItemDelegateForColumn(2,&delegate);
原文链接:https://blog.csdn.net/wzz953200463/article/details/114045605
MVC实例:
https://blog.csdn.net/panchang199266/article/details/104849986/