Loz*_*zer 5 sqlite pyqt qtableview
我有一个连接到QTableView的几千行的Sqlite模型.我可以在QTableView中查看行,但是当我滚动到QTableView的底部时,我只能到达前几百行的末尾.如果我继续拉动滚动条按钮,新行会附加到视图中,但我无法轻松滚动到结尾.将所有行附加到视图后,我可以轻松地从上到下滚动而不会出现问题.
这是代码的重要部分(只是标准):
self.db = QtSql.QSqlDatabase.addDatabase("QSQLITE")
self.db.setDatabaseName(dbFileName)
self.model = QtSql.QSqlTableModel(self.db)
self.model.setTable("results")
self.model.select()
self.tableViewResults.setModel(self.model)
Run Code Online (Sandbox Code Playgroud)
我必须错过一些非常简单的事情.有什么建议?
劳伦斯.
QSqlTableModel懒惰地加载数据,即它会在要求时加载项目.并且QTableView如果需要显示它们将要求物品.您观察到的延迟是QSqlTableModel从数据库中获取新数据的部分.
还有一个问题,如果SQL驱动程序没有报告查询大小,SQLite就是其中之一:
如果数据库未返回查询中所选行的数量,则模型将逐步获取行.有关更多信息,请参阅fetchMore().
因此,在加载所有项目之前,模型实际上不知道将有多少项目.
为了消除延迟,您应该事先加载所有数据(如fetchMore建议的那样):
self.db = QtSql.QSqlDatabase.addDatabase("QSQLITE")
self.db.setDatabaseName(dbFileName)
self.model = QtSql.QSqlTableModel(self.db)
self.model.setTable("results")
self.model.select()
while self.model.canFetchMore():
self.model.fetchMore()
self.tableViewResults.setModel(self.model)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1132 次 |
| 最近记录: |