QFileDialog - 文件删除通知

时间:2015-08-04 21:29:52

标签: qt qfiledialog

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

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

到目前为止我已尝试过:

为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)

然而,快捷方式仍然有效。

1 个答案:

答案 0 :(得分:1)

有很多方法可以删除文件 - 挂钩快捷方式不会帮助你。

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

必须回答的问题:

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

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

  3. 您是否验证了文件系统更改通知是否有效并被Qt的QFileSystemModel选中 - 如果是,则会通知Qt文件对话框是否有平台对话框。