2012-10-01 53 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 –

相關問題