2016-11-17 26 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)按预期工作。