2016-11-17 8 views
1

プログラムでツリービュー内のインデックスとQMLからインデックスを選択解除したいと思います。私は選択を解除する必要がツリーノードのQModelIndexを受け入れる機能を持っていると私は、次の手順を実行しますQMLからTreeViewのインデックスを選択解除してください

function deselectNode(index) 
{ 
myTreeView.selection.select(index, ItemSelectionModel.Deselect) 
} 

私は木の上のSelectionChangedイベントをトリガし、そのインデックスの選択を解除するには、この機能を期待していますが、それはありません何もない。私もトグルで試しました。ツリーから1つのノードだけを選択解除する別の方法はありますか?

つまり、ツリーノードではCmd/Ctrl + Clickを実行しますが、Qmlでは行います。

答えて

0

実際に問題は、自分のツリーのcurrentIndexを別の場所にも設定していたことでした。だから私の質問で述べた関数は実際にはうまくいき、プログラム的にツリーからノードを選択解除することができます。

0

ツリーノードでCtrl +クリックの動作が必要な場合は、selectionModeSelectionMode.MultiSelectionまたはSelectionMode.ExtendedSelectionに設定すると、独自の選択解除機能を記述する必要はありません。

TreeView以外のイベントが発生した場合でも、時にはfunction deselectNodeが必要です。

  • SelectionMode.NoSelectiondeselectNodeを実装するには、それはTreeViewの現在selectionModeに依存して何も選択されていないとdeselectNodeは必要ありませんすることができます。
  • SelectionMode.SingleSelectionmyTreeView.selection.clearCurrentIndex()を使用して現在の選択をクリアします。
  • SelectionMode.MultiSelectionSelectionMode.ExtendedSelection、およびSelectionMode.ContiguousSelection:予想通りmyTreeView.selection.select(index, ItemSelectionModel.Deselect)作品。
関連する問題