Question

According to getOpenFileName instructions:

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

How can I make the dialog remember the path the last time when I close it?

and what does the tr mean in the tr("Open File")?

Thanks

Was it helpful?

Solution

If you omit the dir argument (or pass in an empty string), the dialog should remember the last directory:

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

The tr function is used for translating user-visible strings. You can omit it if you won't ever be providing translations for your application.

EDIT:

It seems that the start directory may not be automatically remembered on all platforms/desktops, depending on whether you use the native dialog or not. If Qt's built-in dialog is used, the start directory should always be automatically remebered on all platforms (even between invokations of the application). To try the non-native dialog, do:

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

Alternatively, you can use the QFileDialog constructor, which will always create a non-native dialog:

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]
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top