我正在构建源自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
,表示错误。
答案 0 :(得分:2)
我很遗憾地告诉您,您所指的这个“最近”列表是特定于操作系统的实现。如果你要启动资源管理器(例如),你会看到相同的路径。
非本机对话框显示一个专门的UI,显示您通过setHistory()设置的所有条目,但仅显示那些条目。