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)