所有基于项(Item)的模型(Model)类都是继承自QAbstractltemModel类的子类。该类为视图和代理提供存取数据的接口。数据无需存储在模型内部。数据可以是其它类的对象、磁盘文件、数据库表或任何数据源。
Qt模型类的继承结构如下图所示:
其中,QAbstractItemModel、QAbstractListModel、QAbstractProxyModel和QAbstractTableModel为抽象类,不能直接使用。其它七个类为具体类,可用于创建模型对象,并提供实际功能:
模型 | 模型类 | 功能 |
---|---|---|
标准项模型 | QStandardItemModel | 表示任意类型的项的集合 |
文件系统模型 | QFileSystemModel | 表示计算机中的文件系统 |
字符串表模型 | QStringListModel | 表示内存中的字符串列表 |
排序过滤代理模型 | QSortFilterProxyModel | 配合其它模型,提供排序和过滤功能 |
SQL查询模型 | QSqlQueryModel | 表示针对数据库的SQL查询结果 |
SQL表模型 | QSqlTableModel | 表示数据库中的表 |
SQL关系表模型 | QSqlRelationalTableModel | 表示数据库中的表,且支持基于外键的表连接 |
如果这些预定义的模型类无法满足要求,程序设计者还可以从QAbstractltemModel、QAbstractListModel或QAbstractTableModel类中派生出自己的模型类。