gpt4 book ai didi

qt - QSettings:sync 什么时候同步?

转载 作者:行者123 更新时间:2023-12-02 03:18:07 68 4
gpt4 key购买 nike

来自 Qt 帮助功能:

void QSettings::sync() Writes any unsaved changes to permanent storage, and reloads any settings that have been changed in the meantime by another application. This function is called automatically from QSettings's destructor and by the event loop at regular intervals, so you normally don't need to call it yourself.

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

最佳答案

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

QSettings stores settings. Each setting consists of a QString that specifies the setting's name (the key) and a QVariant that stores the data associated with the key.

出于效率原因,文档说:

For efficiency, the changes may not be saved to permanent storage immediately. (You can always call sync() to commit your changes.)

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

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

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

qDebug() << QStandardPaths::writableLocation(QStandardPaths::ConfigLocation);

要跟踪文件中的修改(执行同步功能的频率),您可以使用此 python script .

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

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

就您而言,如果您使用 QSettings保存您自己的应用程序的数据,它不会将任何内容恢复到原始状态。它始终会将您的修改写入文件并保持缓存最新。

关于qt - QSettings:sync 什么时候同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55535895/

68 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com