首页 > 解决方案 > 可以使用 QSettings 或其他类在每次启动时存储一些设置(但在启动之间重置)?

问题描述

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

有没有QSettings我错过的选项 - 或者可能是其他一些基于 Qt 的解决方案?还是我基本上坚持自己滚动?(我想以静态std::hash_map或其他形式。)

标签: c++qtqsettings

解决方案


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

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

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

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


推荐阅读