如何让getOpenFileName记住上次打开路径?

11 投票
1 回答
24033 浏览
提问于 2025-04-18 02:18

根据getOpenFileName的说明:

QString fileName = QFileDialog.getOpenFileName(this, tr("Open File"), 
                                          "/home",
                                          tr("Images (*.png *.xpm *.jpg)"));

我怎么才能让这个对话框在我关闭它的时候记住上次的路径呢?

还有,tr("Open File")中的tr是什么意思呢?

谢谢

1 个回答

22

如果你不提供dir这个参数(或者传入一个空字符串),对话框应该会记住上次使用的目录:

filename = QtGui.QFileDialog.getOpenFileName(
               parent, 'Open File', '', 'Images (*.png *.xpm *.jpg)')

tr函数是用来翻译用户能看到的字符串的。如果你的应用程序不需要提供翻译,可以不使用这个函数。

编辑:

看起来在某些平台或桌面环境下,起始目录可能不会自动记住,这取决于你是否使用本地对话框。如果使用Qt自带的对话框,起始目录应该会在所有平台上自动记住(甚至在应用程序重新启动后)。如果想尝试非本地对话框,可以这样做:

filename = QtGui.QFileDialog.getOpenFileName(
               parent, 'Open File', '', 'Images (*.png *.xpm *.jpg)',
               None, QtGui.QFileDialog.DontUseNativeDialog)

另外,你可以使用QFileDialog构造函数,这样会始终创建一个非本地对话框:

dialog = QtGui.QFileDialog(parent)
dialog.setWindowTitle('Open File')
dialog.setNameFilter('Images (*.png *.xpm *.jpg)')
dialog.setFileMode(QtGui.QFileDialog.ExistingFile)
if dialog.exec_() == QtGui.QDialog.Accepted:
    filename = dialog.selectedFiles()[0]

撰写回答