【问题标题】:Qt File Dialog doesn't remember the last directory after restarting project重新启动项目后,Qt文件对话框不记得最后一个目录
【发布时间】:2018-05-15 10:11:56
【问题描述】:

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

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

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

【问题讨论】:

  • 尝试将值保存到 ini 文件中。并在您重新打开应用时重新加载。
  • 我不确定我是否知道该怎么做,我对 Qt 还很陌生,但我会尝试...
  • 您在问题中提供的链接为您提供了在运行过程中保留此信息所需的一切。在 main() 函数中正确设置您的应用信息,然后您可以简单地使用 QSettings 实例来持久化信息。
  • 我应该设置哪些应用信息?...我找不到任何相关内容

标签: c++ qt qfiledialog qsettings


【解决方案1】:

您可以使用 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

widget.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();
}

【讨论】:

  • 我不确定我的问题中的代码和您的答案有什么区别,但它有效!非常感谢..
猜你喜欢
  • 1970-01-01
  • 2011-03-07
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
  • 2018-05-22
相关资源
最近更新 更多