Qt QSettings 是不是会在加载后将键/值保留在内存中?

Posted

技术标签:

【中文标题】Qt QSettings 是不是会在加载后将键/值保留在内存中?【英文标题】:Does Qt QSettings keeps the key/value in memory once loaded?Qt QSettings 是否会在加载后将键/值保留在内存中? 【发布时间】:2011-04-06 05:08:07 【问题描述】:

我使用 QSettings 写入 ini 文件并在应用程序启动时加载配置 我的问题是一旦我按键加载值 QSettings 对象是否将键值保留在内存中 或者它从ini文件中读取值?

【问题讨论】:

【参考方案1】:

值在内存中处理,因此更改文件不会更改您在内存中的 QSettings 对象,反之亦然。

编辑:

调用 sync 以更新到/从文件。

它会保存您已修改的值并读取您未修改但在文件中已修改的任何值。

例子

// settings.ini contains keys Hello and Hi, which contain both "-"

QSettings settings("settings.ini", QSettings::IniFormat),

// in settings object: *Hello* contains *-* and *Hi* contains *-*   
// in settings.ini: *Hello* contains *-* and *Hi* contains *-*

settings.setValue("Hello", "World");
// settings.ini is modified, Hi now contains World

// in settings object: *Hello* contains *World* and *Hi* contains *-*   
// in settings.ini: *Hello* contains *-* and *Hi* contains *World*

settings.sync();

// in settings object: *Hello* contains *World* and *Hi* contains *World*   
// in settings.ini: *Hello* contains *World* and *Hi* contains *World*

如果我没记错的话应该是这样的


从 qt (5.10) 文档到 QSettings::sync() - 此函数由 QSettings 的析构函数自动调用,并由事件循环定期调用,因此您通常不需要自己调用它。

--lumos0815

【讨论】:

其中的更改也写在 QSettings 析构函数中。 所以我不需要编写 Config 单调来将我的配置保存在内存中,我可以使用一次创建的 QSettings 对象 似乎它们在析构函数上更新了doc.qt.nokia.com/stable/qsettings.html@user63898 如果我理解正确的话,是的。 从 qt (5.10) 文档到 QSettings::sync() - 此函数由 QSettings 的析构函数和事件循环定期自动调用,因此您通常不需要调用自己动手。 我的答案是 7 岁。当时没有 Qt 5 的迹象 :) 但是感谢您告诉我这些信息,我会更新答案。

以上是关于Qt QSettings 是不是会在加载后将键/值保留在内存中?的主要内容,如果未能解决你的问题,请参考以下文章

在 Qt 中,如何使用 QSettings 来创建/修改/删除 Windows 注册表项/值?

清理“QSettings”注册表项的最佳方法(Windows 上的 Qt 5)

QT QSettings读写配置文件

如何使用 QSettings 保存和加载数据?

Qt软件开发-QSettings管理用户环境变量(修改输出)

Qt中的QSettings这个类有.value这个成员函数吗?