c++ - 重新启动项目后,Qt 文件对话框不记得最后一个目录
问题描述
我正在为我的项目加载一些文件....但是每次 fileDialog 目录都是我的根目录...
我希望 fileDialog 记住我的路径,并且我已经尝试了以下链接qsettings-file-chooser-should-remember-the-last-directory中的解决方案,但这仅适用于同一会话。
有没有办法为其他会话保存目录?(关闭应用程序并重新打开它时)?
解决方案
您可以使用 QSettings 类。
这是一个简单的例子:
widget.h
#define WIDGET_H
#include <QWidget>
#include <QSettings>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
private:
QString lastDir;
QSettings *settings;
void settingsLoader();
void settingsSaver();
};
#endif // WIDGET_H
小部件.cpp
#include <QFileDialog>
#include "widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
settings = new QSettings("MyCompany", "My soft name", this);
settingsLoader();
lastDir = QFileDialog::getExistingDirectory(this, tr("Open directory"), lastDir);
}
void Widget::settingsLoader()
{
lastDir = settings->value("LastDir", QDir::homePath()).toString();
}
void Widget::settingsSaver()
{
settings->setValue("LastDir", lastDir);
}
Widget::~Widget()
{
settingsSaver();
}
推荐阅读
- c# - Visual Studio 2005中断点时的奇怪行为
- c - 如何使用 Windows 句柄注册回调?
- html - Bootstrap 4 textarea填充剩余的第二列高度
- neo4j - neo4j 索引立即失败,没有错误
- angular - Angular Reactive forms - 动态创建输入字段并使用 id 获取填充输入
- apache-spark - Spark 阶段停留在待处理状态
- swift - “用户”类型的值没有成员“setIdentifer” - Swift
- github - 从 Github 存储库中提取信息
- python - 如何比较python中的两列字符串?
- objective-c - 如何为多个屏幕拍摄没有图标和窗口的桌面壁纸屏幕?