【问题标题】:Possible to store some settings per launch (but reset between launches) using QSettings or other classes?可以使用 QSettings 或其他类在每次启动时存储一些设置(但在启动之间重置)?
【发布时间】:2019-08-13 05:34:52
【问题描述】:

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

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

【问题讨论】:

  • 为什么不将这些信息存储在内存中?
  • @vahancho 本质上,我确实想将它存储在内存中。我只是已经在使用QSettings 范式,并且使用相同的范式来存储保留和易失性设置可能会提高可读性。

标签: c++ qt qsettings


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      • 2019-02-28
      • 2019-02-11
      • 1970-01-01
      • 1970-01-01
      • 2017-03-19
      • 2022-11-29
      相关资源
      最近更新 更多