我的程序有一个QTableView,它显示来自sqlite数据库的数据。由于我的程序将用于对视频文件进行排序,而不是太多,我修改了模型的select方法,将所有数据库加载到内存中,而不是255个条目(默认情况下)。效果很好,但是:
我还有一个个人标题,我可以点击按修改日期,名称和投票对条目进行排序。让我们承认,我通过修改数据对数据进行排序,而不是尝试修改任何东西:它可以工作,一切都是有序的。 但如果修改一个单元格,这个名字就是一个例子,这就是:
修改后,如果再次尝试按数据对数据进行排序,一切正常。 但是在每次修改时,程序仅加载255个条目。基本上,我错过了一个回调(一个在你更新之后被调用的回调)。
我不知道是否必须修复视图或模型。你有什么想法吗?
在我的应用中,我可以使用视图的某些功能来修复它:
column_sorted = self.tableau.horizontalHeader().sortIndicatorSection()
order = self.tableau.horizontalHeader().sortIndicatorOrder()
if column_sorted is not None:
self.tableau.sortByColumn(column_sorted, order)
else:
pass
但我更喜欢更通用的方法。
以下是对我的数据库进行修改的一段代码:
def voter(self):
self.bdd.close()
liste.vote(self.current_video)
self.bdd.open()
self.modele.select()
但问题出现在每个修改数据库的函数上。我想补充一点,我使用的是QSortProxyFilter:
self.proxy = QtGui.QSortFilterProxyModel()
self.proxy.setSourceModel(self.modele)
很抱歉,如果我不清楚,但很难描述这个错误,我的应用程序开始变大(~3000行)。