2016-11-17 25 views
1

我想以編程方式和從QML中取消在Treeview中的索引。我有一個不接受,需要被取消樹節點的QModelIndex一個功能,我執行以下操作:從QML中取消選擇TreeView的索引

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

我希望這個函數來觸發樹上的SelectionChanged事件,並取消指標,但它確實沒有。我也試着用Toggle。有沒有另一種方法可以從樹中取消選擇一個單一節點?

換句話說,我想要做Cmd/Ctrl +點擊一個樹節點上做的事情,但是在Qml中。

回答

0

其實問題是我在另一個地方設置我的樹的currentIndex。所以我在我的問題中提到的功能實際上可以正常工作,並且可以以編程方式從樹中取消選擇一個節點。

0

如果您需要Ctrl +單擊樹節點上的行爲,請將selectionMode設置爲SelectionMode.MultiSelectionSelectionMode.ExtendedSelection,則不需要編寫自己的取消選擇功能。

但是當TreeView以外的某些事件被觸發時,仍然需要function deselectNode。爲了實現deselectNode,它取決於TreeView的電流selectionMode

  • SelectionMode.NoSelection:沒有什麼可以選擇deselectNode是沒有必要的。
  • SelectionMode.SingleSelection:使用myTreeView.selection.clearCurrentIndex()清除當前選擇。
  • SelectionMode.MultiSelectionSelectionMode.ExtendedSelection,並SelectionMode.ContiguousSelectionmyTreeView.selection.select(index, ItemSelectionModel.Deselect)按預期工作。