2016-10-21 4 views
-1

私は自分のアプリケーションにTreeViewを持っています。 QSortFilterProxyModelから継承されたクラスを使用して、表示される行を制限します。私はまた、コンボボックスのselectedIndexに基づいてTreeViewの項目をソートする必要があります。 私はこれまでやった:Comboboxの選択に基づいてQSortFilterProxyModelを使用してTreeViewアイテムを並べ替える方法

  1. コンボボックスの変更の選択指数は、私はsort(0)関数を呼び出すQSortFilterProxyModelから継承したクラス内の関数を呼び出します。 QSortFilterProxyModelから継承したクラスで
  2. が、私はlessThan機能を上書きし、コンボボックス

問題があるの現在の選択に基づいて、私のロジックを実装した、ソートは常に発生しません。私は、アプリケーションを実行し、コンボボックスで項目を選択すると、ツリーの項目が正しくソートされます。しかし、コンボボックス内の別のアイテムを選択すると、ツリーは更新されません。 lessThan関数が呼び出されます。

+1

あなたが使用しているコードを提供する必要があります。あなたが提供した情報では、問題を解決するには十分ではありません。 – Mike

+0

@Mike私が提供した情報は、答えを知っている人にとっては十分だと思います。あなたが見ることができるように、ケビンは問題を理解し、それに答えました。 –

答えて

1

プロキシが動的並べ替え/フィルタに設定されている場合は、同じ列と並べ替え方向でsort()を呼び出すと何も行われません。 https://code.woboq.org/qt5/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp.html#_ZN21QSortFilterProxyModel4sortEiN2Qt9SortOrderE

QSortFilterProxyModel::invalidate()を呼び出すと、頼りになるかもしれません。

+0

ありがとう、私のケースでは両方の動作がうまく動作するソートに必要でした。 QSortFilterProxyModelクラスのインスタンスを作成し、sort()を呼び出す前にinvalidate()を呼び出すときにsetDynamicSortFilter(false) –

関連する問題