【发布时间】:2013-01-28 17:24:08
【问题描述】:
我正在尝试创建一个 QTreeView 来显示来自 SQL 数据库的数据。这是一个大型数据库,因此简单地将数据加载到 QStandardItemModel 似乎令人望而却步。
Qt 的任何预构建 SQL 模型类都不足以完成该任务。因此,似乎有必要对 QAbstractItemModel 进行子类化。
首先,我找不到这样做的例子,所以我想知道这是否是正确的方法。
实现 QAbstractItemModel::data 非常简单。我不确定如何实现 QAbstractItemModel::parent。
Qt 的“简单树模型示例”示例将提供信息,但在该示例中,树结构在内存中用 TreeItem 类表示。我可以复制它,但如果我要复制数据库结构,那么使用 QStandardItemModel 将同样容易。如果我需要维护一个单独的数据结构(除了数据库和 QAbstractItemModel 子类)来表示树结构,那么将 QAbstractItemModel 子类化比仅使用 QStandardItemModel 有什么优势吗?
【问题讨论】:
-
您的问题是什么?当然,您可以继承 QAbstractItemModel。而且您不必在内存中复制数据库。但是您将如何从
QAbstractItemModel::data返回随机 请求的数据?每次都查询?还是创建内存缓存? -
嗯,第一个问题是这是否是一个好主意,或者是否没有人这样做的例子,因为存在一些基本问题。我的想法是每次都进行查询。我还对问题进行了更具体的编辑。