通过HTML / Ajax为大型数据集子类化QAbstractTableModel?

时间:2012-07-25 21:23:29

标签: ajax qt dataset qtableview

我正在尝试通过QTableView和QAbstractTableModel的子类显示一个大表(带有标题,作曲家等的播放列表......所以我不能使用QListWidget)。您必须覆盖检索数据的调用如下所示:

QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;

每次为每个单元格调用此函数(由index.row()& index.colum()指定)。将1:1转换为HTML / Ajax甚至会破坏本地网络的性能。

那么我的选择是什么?这必须是可能的,因为QSqlQueryModel存在并且它们必须具有相同的问题。谷歌搜索Ajax / QAbstractTableModel的组合根本没有返回任何内容。

有什么想法吗?

PS:要半自己回答,看QT-Sources src/sql/models/qsqlquerymodel.cpp就会得出答案。这是可能的,但我想知道是否有人知道开箱即用的解决方案。

1 个答案:

答案 0 :(得分:1)

简而言之,您希望通过查看QSqlQueryModel或某些派生词的来源来利用您所学的概念。可以认为,在示例中,d实际上是包含数据的真实模型存储(在它们的情况下,它包含带有用于确定是否必须进行提取的数据和索引的SQL查询)和{{ 1}}只是作为一个代理类,用于与Qt的Model / View概念集成。

我们在办公室遇到类似情况,逐个查询数据单元会导致效率低下。因此,我们创建了一个有效处理网络中所有请求并将其抽象出来的类。然后我们使用一个非常简单的QSqlQueryModel派生类来与真正的模型类交互,以便在Qt需要时提供数据。它工作得很好。

确保在收到或删除数据时,您分别在QAbstractTableModel / beginInsertRowsendInsertRows / beginRemoveRows之间正确操作模型数据。