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

时间:2011-04-06 05:08:07

标签: c++ qt settings

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

1 个答案:

答案 0 :(得分:2)

值在内存中处理,因此更改文件不会更改内存中的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)docs到QSettings :: sync() - 这个函数是从QSettings的析构函数和事件循环定期自动调用的,所以你通常不需要自己调用它。

- lumos0815