Из справочной функции 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);
Чтобы отслеживать изменения в файле (как часто выполняются функции синхронизации), вы можете использовать этот скрипт питона.
Отвечая на ваш вопрос: ? Всегда ли это сбрасывает мои настройки до точки, когда я запускал свою программу, то есть я никогда не могу изменить свою конфигурацию во время ее выполнения при использовании sync()?
QSettings::sync объединяет изменения из системного файла и из вашего кеша, чтобы сохранить их в файле. Если у вас есть несколько приложений, изменяющих один и тот же файл, они могут перезаписывать друг друга.
В вашем случае, если вы используете QSettings для сохранения данных своего собственного приложения, оно ничего не восстановит в исходное состояние. Он всегда будет записывать ваши изменения в файл и поддерживать кеш в актуальном состоянии.