0

我的程序有一个 QTableView,它显示来自 sqlite 数据库的数据。由于我的程序将用于对视频文件进行排序,而不是太多,我修改了模型的 select 方法,将所有数据库加载到内存中,而不是 255 个条目(默认情况下)。它运作良好,但是:

我还有一个个人标题,我可以单击它以按修改日期、姓名和投票对条目进行排序。让我们承认,我通过修改数据对数据进行排序,而没有尝试修改任何内容:它有效,所有内容都已排序。但是如果修改一个单元格,例如名称,会发生以下情况:

  • 该程序加载 255 个条目,按日期对它们进行排序,然后显示它们
  • 它加载 255 个其他条目,按日期对它们进行排序,然后显示它们
  • ETC

修改后,再次尝试按数据排序,一切正常。但在每次修改时,程序只加载 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 行)。

4

0 回答 0