2012-10-01 21 views

回答

1

默认情况下,doubleClicked信号在正常编辑操作之前发出,该操作由QAbstractItemView.edit函数执行。

幸运的是,这个功能是虚拟的,所以它可以在子类中重新实现:

class TreeView(QtGui.QTreeView):  
    def edit(self, index, trigger, event): 
     if trigger == QtGui.QAbstractItemView.DoubleClicked: 
      print 'DoubleClick Killed!' 
      return False 
     return QtGui.QTreeView.edit(self, index, trigger, event) 
+0

另外请注意,您可以按F2重命名触发,所以这不处理。 –

+0

@GreenCell。 OP特意要求停止双击编辑,这就是示例代码的作用。它可以很容易地适用于处理其他类型的编辑(包括F2 - 或者更准确地说,[平台编辑键](https://doc.qt.io/qt-4.8/qabstractitemview.html#EditTrigger-enum) )。 – ekhumoro

+0

是的,我知道,但F2是一个很容易被忽视的微妙东西。想到我提到它,以防有人没有想到它。 –

6

我不知道你是否有这个在Python版本,但在C++的Qt您只需设置编辑触发器在QAbstractItemView中:

void setEditTriggers (EditTriggers triggers)

+0

刚刚重温这个,你说得对:我完全忽略了'setEditTriggers'。 – ekhumoro

+0

有关如何使用此功能的示例,请参阅http://stackoverflow.com/questions/18831242/qt-start-editing-of-cell-after-one-click/31197990#31197990 –

相关问题