如何在PyQt中禁用QTreeView和QFileSystemModel上的双击文件重命名行为?

时间:2012-10-01 09:45:12

标签: python pyqt double-click qtreeview qfilesystemmodel

简单的问题。我想使用F2或Enter进行重命名,然后双击打开文件。

使用self.treeView.doubleClicked.connect(self.doubleclick)我可以在self.doubleClick方法中执行操作,但仍会触发重命名。

该模型不是只读的(model.setReadOnly(False))。

2 个答案:

答案 0 :(得分:8)

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

void setEditTriggers ( EditTriggers triggers )

答案 1 :(得分: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)