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

标签 c++ qt file-io

我正在使用 Windows 7 开发 Qt 4.8.5,并且我有一个调用模态 QFileDialogSLOT,它就像:

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/

相关文章:

c - 避免文件中出现空白

java - 如何在 Java 中向现有文件追加文本?

c++ - 我如何修复我的编码,刚开始使用字符串

Qt 使用颜色和 alpha-map 绘制图标

c++ - 平滑圆 - 画家绘图

java - 是否可以同时读取和写入文件?

C++ - 写入文件 - Utf16LE

c++ - 如何写入临时文件夹

c++ - 作为 OuterClass 对象成员的 InnerClass 对象被创建了两次

c++ - 如何在每次 QTimer 发射时使用 QLabel