是否可以使用 QSettings 或其他 类 在每次启动时存储一些设置(但在启动之间重置)?

Possible to store some settings per launch (but reset between launches) using QSettings or other classes?

我有一个 Qt 应用程序,我已经在其中使用 QSettings 来存储启动之间的持久状态。但是,有一些类似状态的东西我只想在当前会话有效时存储,我不希望它们在应用程序的不同启动之间持续存在。

是否有我遗漏的 QSettings 选项 - 或者可能是其他一些基于 Qt 的解决方案?或者我基本上是在自己滚动? (我想是静态 std::hash_map 之类的形式。)

一个选项可以是使用临时文件(QTemporaryFile 是一种方便的方法)来存储会话设置,因此当您关闭应用程序(或会话,只是关闭设置和临时文件):

QTemporaryFile tmpFile;
tmpFile.open();
QSettings sessionSettings(tmpFile.fileName(), QSettings::IniFormat);

只需将临时文件和设置存储在一起,这样它们就有相同的寿命。

关于它的两条评论:请注意 QTemporaryFile::fileName() returns 一个空字符串,直到 open 被调用。此外,您还必须使用基于文件的设置格式,如 INI 或类似格式。

那为什么要使用 QSettings?相反,你正在寻找一个普通的共享(单例?)hashmap?

引用 https://doc.qt.io/qt-5/qsettings.html#details :

If all you need is a non-persistent memory-based structure, consider using QMap instead.