view:显示数据
model:保存数据
delegate:协调model和view之间的数据edit(编辑)和render(渲染)
view
QListView:列表
QTreeView:树形
QTableView:表格
推荐使用QTableView,通过setModel()绑定数据源
区别:
1. QTableWidget是QTableView的子类
2. QTableView可以自定义数据模型(setModel),QTableWidget的setModel()是私有的,不可以自定义数据源,只能使用标准数据模型,单元格使用QTableWidgetItem
model
model的基类是QAbstractItemModel
QStandardItemModel:树形结构数据
QAbstractListModel —> QStringListModel:存储简单的QString的列表项
QAbstractTableModel —> QSqlQueryModel —> QSqlTableModel,QSqlRelationalTableModel:访问数据库
QFileSystemModel:文件信息
QSortFilterProxyModel:对数据进行过滤/排序
delegate
基类:QAbstractItemDelegate
QStyledItemDelegate:自定义数据显示
自定义委托
1. 继承QItemDelegate
2. 实现方法
3. createEditor:编辑器(控件)
4. setEditorData:设置编辑器数据(模型的数据放入控件)
5. setModelData:数据写入模型(控件的数据放入模型)
6. updateEditorGeometry:更新编辑器的布局
步骤
1. 创建模型
2. 创建视图
3. 视图绑定模型setModel
4. 视图设置委托setItemDelegate