【问题标题】:QFileDialog - File deletion notificationQFileDialog - 文件删除通知
【发布时间】:2015-08-04 21:29:51
【问题描述】:

我正在尝试修改库存 QFileDialog 以更好地支持SNFS 文件系统。目前它在删除文件后不会更新。因此,如果用户删除了一个文件,该文件仍会显示在 Dialog 中。

所以我需要的是在用户从对话框中删除文件后获得通知的方法,或者删除默认快捷方式以便我可以实现自己的方法。

到目前为止我已经尝试过:

为 DEL 键安装 eventFilter

事件似乎在到达我的过滤器之前就被 QFileDialog 停止了。

添加我自己的快捷方式

这会导致:

QAction::eventFilter: Ambiguous shortcut overload: Del

删除设置的快捷方式

我在对话框中调用以下函数以递归方式删除所有设置的快捷方式和操作:

def to_children(self, parent):
    for child in parent.children():
        if hasattr(child, 'removeAction'):
            for a in child.actions():
                child.removeAction(a)
        if hasattr(child, 'releaseShortcut'):
            for i in range(100):
                self.releaseShortcut(i)
        self.to_children(child)

但是快捷方式仍然有效。

【问题讨论】:

  • 也许您想修改您的问题以表明您只对覆盖 Qt 版本的文件对话框的删除功能感兴趣,而其他地方的删除并不重要。
  • 很可能,库存文件对话框使用自己的快捷操作,它们可能不是对话框的子项。
  • 我也删除了这些,但没有帮助。

标签: qt qfiledialog


【解决方案1】:

删除文件的方法有很多种 - 挂钩快捷方式对您没有帮助。

有两种文件对话框:原生对话框和 Qt 对话框。本机对话框跟踪 Windows 和 OS X 上的文件系统状态,可能会有轻微的延迟,这是特定于平台的,并且存在于所有应用程序中的程度相同。在这些平台上,您不需要做任何进一步的事情。 Qt 对话框,总是在 Windows 上使用,也可以在其他平台上使用,使用文件系统模型,在可能的情况下,它会收到文件系统状态更改的通知。

必须回答的问题:

  1. 您正在使用哪个对话框(本机或 Qt)? DontUseNativeDialog 选项可以设置为强制 Qt 对话框。

  2. 您平台上的 SNFS 是否实现文件系统更改通知?

  3. 您是否验证了文件系统更改通知是否正常工作并被 Qt 的QFileSystemModel 接收 - 如果是这样,无论平台对话框是否有效,都会通知 Qt 文件对话框。

【讨论】:

  • 1.我使用的是 Qt 版本 2。否 3。他们没有 - 快捷方式是从对话框中删除文件的唯一方法,在这种特殊情况下,其他删除方案并不重要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
相关资源
最近更新 更多