45 模型

所有基于项(Item)的模型(Model)类都是继承自QAbstractltemModel类的子类。该类为视图和代理提供存取数据的接口。数据无需存储在模型内部。数据可以是其它类的对象、磁盘文件、数据库表或任何数据源。

Qt模型类的继承结构如下图所示:

其中,QAbstractItemModel、QAbstractListModel、QAbstractProxyModel和QAbstractTableModel为抽象类,不能直接使用。其它七个类为具体类,可用于创建模型对象,并提供实际功能:

模型模型类功能
标准项模型QStandardItemModel表示任意类型的项的集合
文件系统模型QFileSystemModel表示计算机中的文件系统
字符串表模型QStringListModel表示内存中的字符串列表
排序过滤代理模型QSortFilterProxyModel配合其它模型,提供排序和过滤功能
SQL查询模型QSqlQueryModel表示针对数据库的SQL查询结果
SQL表模型QSqlTableModel表示数据库中的表
SQL关系表模型QSqlRelationalTableModel表示数据库中的表,且支持基于外键的表连接

如果这些预定义的模型类无法满足要求,程序设计者还可以从QAbstractltemModel、QAbstractListModel或QAbstractTableModel类中派生出自己的模型类。