C++ 如何获取QFileDialog的最新历史路径

C++ 如何获取QFileDialog的最新历史路径,c++,qt,file-io,C++,Qt,File Io,我正在使用Windows 7开发Qt 4.8.5,我有一个插槽,它调用一个模态QFileDialog,类似于: QFileDialog fileDialog(this); fileDialog.setFileMode(QFileDialog::Directory); if (fileDialog.exec()) { // blah blah } 我注意到,QFileDialog会自动保留最近的路径,无论何时构建它,即使我重新启动主程序,它也能显示最新的路径 但是我不知道Qt在哪里保存状

我正在使用Windows 7开发Qt 4.8.5,我有一个
插槽
,它调用一个模态
QFileDialog
,类似于:

QFileDialog fileDialog(this);
fileDialog.setFileMode(QFileDialog::Directory);
if (fileDialog.exec()) {
    // blah blah
}
我注意到,
QFileDialog
会自动保留最近的路径,无论何时构建它,即使我重新启动主程序,它也能显示最新的路径


但是我不知道Qt在哪里保存状态,我想在不打开
QFileDialog
的情况下以
QString
的形式获取最新路径。有人知道如何实现这一点吗?

我已经从Qt源代码中提取了代码。如您所见,此信息存储在用户范围的QSettings中。在Windows上,它位于注册表项下:
HKEY\u CURRENT\u USER\Software\trolletech\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.
QSettings设置(QSettings::UserScope,QLatin1String(“Trolltech”);
settings.beginGroup(QLatin1String(“Qt”);
QByteArray p=settings.value(QLatin1String(“文件对话框”)).toByteArray();
QDataStream流(&p,QIODevice::ReadOnly);
QByteArray分裂状态;
QList书签;
英语史;
QString当前目录;
秦T32标记;
qint32 v;
流>>标记
>>五
>>分裂态
>>书签
>>历史

>>当前目录;//我必须通过注册表项访问当前目录吗?我期待着更简单的事情…:(@Tay2510,您不需要关心注册表。在给定的工作代码示例中,
currentDirectory
就是您需要的。只需按原样使用即可。