Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过HTML/Ajax为大型数据集子类化QAbstractTableModel?_Ajax_Qt_Dataset_Qtableview - Fatal编程技术网

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

通过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甚至会降低

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

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
之间正确操作模型数据。

感谢您为我指明了正确的方向。和奖金提示,但这是一个只读表。谢谢你告诉我正确的方向。和奖金提示,但它是一个只读表。