如何获得QFileDialog的最新历史路径

时间:2014-05-12 08:51:44

标签: c++ qt file-io

我正在使用Windows 7开发Qt 4.8.5,我有SLOT调用模态QFileDialog,就像这样:

QFileDialog fileDialog(this);
fileDialog.setFileMode(QFileDialog::Directory);
if (fileDialog.exec()) {
    // blah blah
}

我注意到QFileDialog会自动保留最近的路径,无论何时构建,即使重新启动主程序,它也能显示最新的路径。

但我不知道Qt在哪里保存状态,并且我希望在不打开QString的情况下将最新路径设为QFileDialog。有谁知道如何实现这个目标?

1 个答案:

答案 0 :(得分:2)

我从Qt源中提取了代码。如您所见,此信息存储在用户范围的QSettings中。在Windows上,它位于注册表项下:HKEY_CURRENT_USER\Software\Trolltech\OrganizationDefaults\Qt。以下是要使用的代码:

QSettings settings(QSettings::UserScope, QLatin1String("Trolltech"));
settings.beginGroup(QLatin1String("Qt"));
QByteArray p = settings.value(QLatin1String("filedialog")).toByteArray();

QDataStream stream(&p, QIODevice::ReadOnly);
QByteArray splitterState;
QList<QUrl> bookmarks;
QStringList history;
QString currentDirectory;
qint32 marker;
qint32 v;

stream >> marker
       >> v
       >> splitterState
       >> bookmarks
       >> history
       >> currentDirectory; // <-- The recent path.

请注意,这可以在下一个Qt版本中更改。