我正在构建从QFileDialog
派生的自定义类,我想应用DontUseNativeDialog
选项。但是,这似乎从文件组合框中消除了"最近的位置"部分,如果可能的话,我想还原。
有没有办法执行此操作,而无需直接访问系统的"最新位置"路径列表并通过setHistory()
将其应用于对话框?对话框的目的是在多个平台上使用,此策略似乎可能会变得凌乱。(但是,如果有一种独立于平台的方法来访问PYQT/Python中系统的"最新位置"列表,那么我都是耳朵。)
这是一个最小的代码样本,将重现该问题。
w = QFileDialog()
w.setOption(DontUseNativeDialog)
w.show()
我尝试了w.setHistory(w.history())
,它将当前目录添加到"最近的位置"中,但它并未恢复我在本机对话框中看到的正常〜5个最近的目录。甚至在设置DontUseNativeDialog
选项之前,w.history()
也只会返回当前目录,而不是本机对话框中显示的最新位置的完整列表。
更新:我还尝试在设置DontUseNativeDialog
选项之前使用saveState()
保存对话框的状态,例如
w = QFileDialog()
state = w.saveState()
w.setOption(DontUseNativeDialog)
w.restoreState(state)
但是restoreState()
返回False
,指示错误。
我很抱歉告诉你,您所指的"最新"列表是一个特定操作系统的实现。与您看到的相同路径,您会看到是否要启动Explorer(例如)。
非本地对话框显示一个专门的UI,该UI显示您通过sethistory()设置的所有条目,但仅这些条目。