众所周知,Qt提供了一套Model/View框架供开发者使用,Model用来提供数据, View则用来提供视觉层的显示。实际上这是一套遵循MVC设计模式的GUI框架,因为Qt还提供了默认的Delegate作为Controller来作为控制器。
MVC的好处这里就不多说了,为了开发者使用方便,Qt还提供了基于项(Item)的Model/View实现----QXxxWidget(QTableWidget、QListWidget等),对于一些简单的应用场景,这已经足够了并且使用起来非常方便。这里我们简单介绍下如何使用自定义的数据模型,来满足各种花式的要求。
1. 选择合适的Model继承
1.1 标准数据模型
Qt实现了4类标准数据模型供我们在不同的场景下使用:
- QStringListModel:存储字符串列表。
- QStandardItemModel:存储树状结构的任意数据。
- QFileSystemModel:存储本地文件系统上的文件和目录信息。
- QSqlQueryModel、QSqlRelationalTableModel、QSqlTableModel:存储关系型数据库中的数据。
如果使用情况和上述情况之一比较相似,则可以考虑继承对应的模型类,并重新实现少数虚函数。