模型/视图是指处理数据的模型和向用户提供GUI的视图,这是GUI分离的一个结构,也叫MVC。
如图所示,模型/视图分离了控件与数据。
其中各部分的功能如下:
-
数据(Data)是实际的数据,如数据库的一个数据表或SQL查询结果,内存中的一个 StringList,或磁盘文件结构等。
-
视图或视图组件(View)是屏幕上的界面组件,视图从数据模型获得每个数据项的模型索引(model index),通过模型索引获取数据,然后为界面组件提供显示数据。Qt 提供一些现成的数据视图组件,如 QListView、QTreeView 和 QTableView 等。
-
模型或数据模型(Model)与实际数据通信,并为视图组件提供数据接口。它从原始数据提取需要的内容,用于视图组件进行显示和编辑。Qt 中有一些预定义的数据模型,如 QStringListModel 可作为 StringList 的数据模型,QSqlTableModel 可以作为数据库中一个数据表的数据模型
由三部分组成:
1、模型:
提供了存储和管理数据的界面
2、代理:
可以将保存或者映射到模型的数据描绘到视图控件进行处理。
3、视图:
将数据显示到界面上。
MVC的使用,使得我们只需要关注更新Model的部分,而不需要关系View该如何变化,因为当Model改变了,所有关联它的view都会得到相应的更新,而且我们只需要维护一个Model。