我正在建立一个从QFileDialog派生的自定义类,并且我想应用DontUseNativeDialog选项。但是,这似乎消除了文件组合框中的“最近的地方”部分,如果可能,我想恢复它。

有没有一种方法可以直接访问系统的“最近地点”路径列表并通过setHistory()将其应用于对话框?该对话框应在多个平台上使用,并且这种策略看起来可能会变得困惑。 (不过,如果有一种独立于平台的方式来访问PyQt / Python中系统的“最近地点”列表,我将不知所措。)

这是将重现此问题的最小代码示例。

w = QFileDialog()
w.setOption(DontUseNativeDialog)
w.show()

我已经尝试过w.setHistory(w.history()),它将当前目录添加到“最近的地方”,但是它没有还原我在本机对话框中看到的正常的〜5最近目录。即使在设置DontUseNativeDialog选项之前,w.history()只会返回当前目录,而不返回本机对话框中出现的最近地点的完整列表。

更新:我还尝试在设置saveState()选项之前使用DontUseNativeDialog保存对话框的状态。
w = QFileDialog()
state = w.saveState()
w.setOption(DontUseNativeDialog)
w.restoreState(state)

restoreState()返回False,指示错误。

最佳答案

很遗憾地告诉您,您所指的这个“最新”列表是特定于操作系统的实现。如果您要启动资源管理器,则会在此处看到相同的路径(例如)。

非本机对话框显示一个专门的UI,该UI显示您通过setHistory()设置的所有条目,但仅显示那些条目。

07-25 20:36