如何使PyQt5 QTreeview节点在代码中可编辑?

时间:2018-07-14 20:27:14

标签: python pyqt pyqt5 qtreeview

我有一个问题。

我正在使用PyQt5和Python 3.6,并且希望使用QTreeview列出文件夹中的文件。当用户右键单击文件夹中的文件时,将显示一个上下文菜单。选项之一是重命名。如果用户单击该按钮,我希望先选择文件,然后突出显示文件名,就像Windows在“文件资源管理器”中执行此操作时一样。

Windows文件重命名

我敢肯定,我已经弄清楚了我想如何使用菜单本身以及其他功能(删除,打开等),而且我相当确定我将能够使用插槽/信号捕获新名称并在文件系统中对其进行更改。但是我完全迷住了如何进行选择并以编程方式突出显示。同样,这将通过上下文菜单功能完成。我现在花了HOURS来搜索Internet和Qt文档,试图弄清楚这一点。我承认我已经迷上了这个文档。

我已经看到可以在哪里使用QTreeview的currentIndex()来获取当前所选项目的QModelIndex对象,但是在浏览QModelIndex文档时,我没有发现任何有关编辑或突出显示项目的信息。我知道有旗帜。我在模型示例中看到了它们。我看不到您应该如何处理他们。

QTreeview是否支持此功能?我也看过QTreewidget,但是它似乎没有我需要将文件显示为节点文件系统样式的功能。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您需要执行的操作如下:

  • 禁用QFileSystemModel的ReadOnly属性。
  • 禁用QTreeView触发器
  • 使用indexAt()
  • 获取与点击位置相关联的QModelIndex
  • 通过edit()的{​​{1}}方法启用编辑。

在示例中,我在第一栏中显示了如何启用上下文菜单。

QTreeView