首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QSettings:同步何时同步?

QSettings:同步何时同步?
EN

Stack Overflow用户
提问于 2019-04-05 12:54:12
回答 1查看 1.8K关注 0票数 2

来自Qt帮助函数:

void::sync()将任何未保存的更改写入永久存储,并重新加载其他应用程序同时更改的所有设置。此函数由QSettings的析构函数和事件循环定期自动调用,因此通常不需要自己调用它。

“同时”到底是什么意思?这是否总是在启动程序时重置我的设置,这意味着在使用sync()时,我永远无法在运行时更改配置?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-05 16:08:47

您可以假设QSettings是作为一个全局std::map<QString, QVariant>实现的,它的作用类似于设置的缓存。文件上说:

QSettings存储设置。每个设置由指定设置名称(键)的QString和存储与键关联的数据的QVariant组成。

出于效率的原因,文件说:

为了提高效率,这些更改可能不会立即保存到永久存储中。(始终可以调用sync()来提交更改。)

每次修改设置时,都会更新缓存值,但不更新持久文件。QSettings的行为取决于平台。

如果您想知道它在硬盘中存储/刷新文件的频率,您需要知道它的位置。

可以使用QStandardPaths类和QStandardPaths::ConfigLocation标记检索路径:

代码语言:javascript
复制
qDebug() << QStandardPaths::writableLocation(QStandardPaths::ConfigLocation);

要跟踪文件中的修改(同步函数执行的频率),可以使用此python脚本

回答你的问题:?这是否总是在启动程序时重置我的设置,这意味着在使用sync()时,我永远无法在运行时更改配置?

QSettings::sync将系统文件中的修改与缓存中的修改合并起来,以将其存储在文件中。如果有多个应用程序修改同一个文件,它们可能会相互覆盖。

在这种情况下,如果使用QSettings保存自己应用程序的数据,则不会将任何数据恢复到原来的状态。它将始终将您的修改写入文件,并保持缓存的最新。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55535895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档