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



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

是否有我缺少的QSettings选项-或者其他基于Qt的解决方案?还是我基本上陷入了自己的滚动?(我想以静态std::hash_map或其他形式出现。

一种选择是使用临时文件(QTemporaryFile是一种方便的方法)来存储会话设置,因此当您关闭 de 应用程序(或会话,只需关闭设置和临时文件)时它会自动销毁:

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

只需将临时文件和设置存储在一起,以便它们具有相同的生命周期。

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

那为什么要使用QSettings呢? 相反,您正在寻找一个正常的共享(单例?)哈希图?

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

如果您只需要一个基于非持久内存的结构,请考虑 改用 QMap。

最新更新