我正在使用 Windows 7 开发 Qt 4.8.5,并且我有一个调用模态 QFileDialog
的 SLOT
,它就像:
QFileDialog fileDialog(this);
fileDialog.setFileMode(QFileDialog::Directory);
if (fileDialog.exec()) {
// blah blah
}
我注意到QFileDialog
会自动保留最近的路径,并且无论何时构建它,即使我重新启动主程序,它也能够显示最新的路径。
但我不知道 Qt 在哪里保存状态,我想在不打开 QFileDialog
的情况下以 QString
形式获取最新路径。有谁知道如何实现这一目标?
最佳答案
我已经从 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 版本中更改。
关于c++ - 如何获取QFileDialog的最新历史路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23604692/