【问题标题】:How to disable the double click file renaming behavior on QTreeView and QFileSystemModel in PyQt?如何在 PyQt 中禁用 QTreeView 和 QFileSystemModel 上的双击文件重命名行为?
【发布时间】:2012-09-22 03:51:05
【问题描述】:

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

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

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

【问题讨论】:

    标签: python pyqt double-click qtreeview qfilesystemmodel


    【解决方案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)
    

    【讨论】:

    • 另请注意,您可以按 F2 触发重命名,因此无法处理。
    • @GreenCell。 OP专门要求终止双击编辑,这就是示例代码的作用。它可以很容易地适应处理其他类型的编辑(包括 F2 - 或更准确地说,platform edit-key)。
    • 是的,我知道,但 F2 是一个很微妙的东西,很容易被忽视。我想我会提到它以防万一有人不考虑它。
    • @GreenCell 完全独立的主题,这明确是关于 DoubleClick。易于使用 trigger == QAbstractItemView.EditKeyPressed 为任何想知道的人实现这一目标。
    【解决方案2】:

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

    void setEditTriggers ( EditTriggers triggers )

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多