通过HTML/Ajax为大型数据集子类化QAbstractTableModel?
我正试图通过QTableView和QAbstractTableModel的子类来显示一个大表(一个包含标题、作曲家等的播放列表,所以我不能使用QListWidget)。您必须覆盖的检索数据调用如下所示:通过HTML/Ajax为大型数据集子类化QAbstractTableModel?,ajax,qt,dataset,qtableview,Ajax,Qt,Dataset,Qtableview,我正试图通过QTableView和QAbstractTableModel的子类来显示一个大表(一个包含标题、作曲家等的播放列表,所以我不能使用QListWidget)。您必须覆盖的检索数据调用如下所示: QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; 对于每个单元格(由index.row()和index.column()指定),每次调用此函数。将1:1转换为HTML/Ajax甚至会降低
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
对于每个单元格(由index.row()和index.column()指定),每次调用此函数。将1:1转换为HTML/Ajax甚至会降低本地网络的性能
那么我有什么选择呢?这必须是可能的,因为QSqlQueryModel存在,并且它们必须有相同的问题。在谷歌上搜索Ajax/QabStretctTableModel的组合完全没有返回任何结果
有什么想法吗
PS:为了半回答我自己的问题,查看QT源代码
src/sql/models/qsqlquerymodel.cpp
可以找到答案。这是可能的,但我想知道是否有人知道一个现成的解决方案。简而言之,是的,您将希望利用通过查看QSqlQueryModel
或某些衍生工具的源代码所学到的概念。可以认为,在本例中,d
实际上是包含数据的真正模型存储(在他们的例子中,它包含SQL查询,其中包含用于确定是否必须进行回迁的数据和索引),而QSqlQueryModel
只是作为其上的代理类,用于与Qt的模型/视图概念集成
在办公室中,我们也遇到了类似的情况,一个单元一个单元地查询数据会导致很大的效率低下。因此,我们创建了一个类,该类可以有效地处理网络中的所有请求,并将其抽象出来。然后,我们使用一个非常简单的QAbstractTableModel
派生类与真实模型类交互,以提供Qt所需的数据。它工作得很好
只需确保在接收或删除数据时,您分别在
beginInsertRows
/endInsertRows
和BeginRemoverRows
/EndRemoverRows
之间正确地操作模型数据。简而言之,是的,您将希望利用通过查看源代码了解的概念QSqlQueryModel
或某些衍生工具。可以认为,在本例中,d
实际上是包含数据的真正模型存储(在他们的例子中,它包含SQL查询,其中包含用于确定是否必须进行回迁的数据和索引),而QSqlQueryModel
只是作为其上的代理类,用于与Qt的模型/视图概念集成
在办公室中,我们也遇到了类似的情况,一个单元一个单元地查询数据会导致很大的效率低下。因此,我们创建了一个类,该类可以有效地处理网络中的所有请求,并将其抽象出来。然后,我们使用一个非常简单的QAbstractTableModel
派生类与真实模型类交互,以提供Qt所需的数据。它工作得很好
只需确保在接收或删除数据时,您分别在
beginInsertRows
/endInsertRows
和BeginRemoverRows
/EndRemoverRows
之间正确操作模型数据。感谢您为我指明了正确的方向。和奖金提示,但这是一个只读表。谢谢你告诉我正确的方向。和奖金提示,但它是一个只读表。