0

私のプログラムには、sqlite データベースからのデータを表示する QTableView があります。私のプログラムはあまり多くないビデオ ファイルを並べ替えるために使用されるため、モデルの select メソッドを変更して、255 エントリ (デフォルト) ではなく、すべてのデータベースをメモリにロードしました。それはうまくいきますが:

個人用ヘッダーもあり、これをクリックして、変更日、名前、および投票でエントリを並べ替えることができます。何も変更しようとせずに、変更データでデータを並べ替えたことを認めましょう。それは機能し、すべてが並べ替えられます。ただし、セルを変更すると、たとえば名前が次のようになります。

  • プログラムは 255 のエントリを読み込み、日付順に並べ替えてから表示します
  • 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 行)。

4

0 に答える 0