1

QSortFilterProxyModelを使用して入力テキストによるフィルタリングを可能にし、QItemSelectionModelを使用して選択内容をツリービューに反映させるQTreeviewがあります。

質問なんですが、フィルタリング結果がアイテム選択に反映されないようにする方法はありますか?

実現したいことを描いて、現在起こっていることはこれです。

状態-1。イニシャル。

Root
|---Leaf-1 Selected (manually)
|---Leaf-2
|---Leaf-3

状態-2。たとえば、「Leaf-3」でフィルタリングすると、ツリービューに次のように表示されます。

Root
|---Leaf-3

状態-3-notIdeal。次に、フィルタリング テキストをクリアします。

Root
|---Leaf-1 
|---Leaf-2
|---Leaf-3

「Leaf-1」を次のように選択したままにしたい:

状態-3-理想。

Root
|---Leaf-1 Selected
|---Leaf-2
|---Leaf-3

コードを調べると、 QSortFilterProxyModel.filterAcceptsRow が false を返す場合、QItemSelectionModel.selectionChanged引数deselected、選択を解除するア​​イテムの情報が設定されているようです。また、アイテムが手動で選択解除されたのか、フィルタリングによって選択解除されたのかを区別する方法を見つけられませんでした。

私はPyQtUbuntu 12.10で使用していますが、これはすべてのQt実装に適用できるはずです。

4

0 に答える 0