我正在使用Windows 7开发Qt 4.8.5,我有SLOT
调用模态QFileDialog
,就像这样:
QFileDialog fileDialog(this);
fileDialog.setFileMode(QFileDialog::Directory);
if (fileDialog.exec()) {
// blah blah
}
我注意到QFileDialog
会自动保留最近的路径,无论何时构建,即使重新启动主程序,它也能显示最新的路径。
但我不知道Qt在哪里保存状态,并且我希望在不打开QString
的情况下将最新路径设为QFileDialog
。有谁知道如何实现这个目标?
答案 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版本中更改。