首页 > 解决方案 > 重新启动项目后,Qt 文件对话框不记得最后一个目录

问题描述

我正在为我的项目加载一些文件....但是每次 fileDialog 目录都是我的根目录...

我希望 fileDialog 记住我的路径,并且我已经尝试了以下链接qsettings-file-chooser-should-remember-the-last-directory中的解决方案,但这仅适用于同一会话。

有没有办法为其他会话保存目录?(关闭应用程序并重新打开它时)?

标签: c++qtqfiledialogqsettings

解决方案


您可以使用 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();
}

推荐阅读