ListView中的model可以使用c++中继承自QAbstractItemModel或QAbstractListModel的自定义模型类所以本章主要学习如何使用C++中的继承QAbstractListModel的model类.
1.QAbstractListModel介绍
QAbstractListModel为模型提供了一个标准接口,它不能被直接使用,我们必须子类化实现它.如果你想用于树视图,则使用子类QAbstractTableModel可能更合适。
在对QAbstractListModel进行子分类时,必须重写:
int rowCount(const QModelIndex &parent = QModelIndex());
//返回显示的行数QVariant data(const QModelIndex &index, int role = Qt::DisplayRole);
//返回index单元格下的role角色数据。通过index可以获取行号和列号QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole);
//返回标题role角色对应的值(需要标题数据时重写)
// section:段号,从0开始,对于Qt::Horizontal水平标题,则是每列的标题名,对于Qt::Vertical垂直标题,则是每行的左侧标题名
//orientation:标题类型
//role:对应值是Qt:: ItemDataRole枚举, 对于role角色,常用的有:
//Qt::DisplayRole :以文本方式显示数据(QString)
//Qt::DecorationRole :将数据作为图标来装饰(QIcon,QPixmap)
//Qt::EditRole :可编辑的数据信息显示(QString)
//Qt::Too