如何在PyQt中禁用QTreeView和QFileSystemModel上的双击文件重命名行为?
简单的问题。我想用F2或Enter进行重命名,然后双击打开一个文件。如何在PyQt中禁用QTreeView和QFileSystemModel上的双击文件重命名行为?
使用self.treeView.doubleClicked.connect(self.doubleclick)
我可以在我的self.doubleClick
方法中执行某些操作,但重命名仍然被触发。
该模型不是只读的(model.setReadOnly(False)
)。
默认情况下,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)
我不知道你是否有这个在Python版本,但在C++的Qt您只需设置编辑触发器在QAbstractItemView中:
void setEditTriggers (EditTriggers triggers)
刚刚重温这个,你说得对:我完全忽略了'setEditTriggers'。 – ekhumoro
有关如何使用此功能的示例,请参阅http://*.com/questions/18831242/qt-start-editing-of-cell-after-one-click/31197990#31197990 –
另外请注意,您可以按F2重命名触发,所以这不处理。 –
@GreenCell。 OP特意要求停止双击编辑,这就是示例代码的作用。它可以很容易地适用于处理其他类型的编辑(包括F2 - 或者更准确地说,[平台编辑键](https://doc.qt.io/qt-4.8/qabstractitemview.html#EditTrigger-enum) )。 – ekhumoro
是的,我知道,但F2是一个很容易被忽视的微妙东西。想到我提到它,以防有人没有想到它。 –