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

iac*_*opo 4 python pyqt double-click qtreeview qfilesystemmodel

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

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

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

gre*_*ell 8

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

void setEditTriggers ( EditTriggers triggers )


ekh*_*oro 2

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

幸运的是,这个函数是虚函数,因此可以在子类中重新实现:

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)
Run Code Online (Sandbox Code Playgroud)