QSettings,很好用,也很易用,但在一些场景下(如程序异常退出、异常断电), 容易出现配置丢失的情况!
void QSettings::setValue(const QString & key, const QVariant & value)
setValue函数设置指定KEY的值,如果已存在则替换先前的值,但它并不立即回写文件,给断电、异常退出提供了丢失数据的机会!
void QSettings::sync()
sync函数负责回写,它会在QSettings析构函数中自动调用或事件循环中定期调用,一般不用手动调用。 这里有些坑, 一些辅助线程没有事件循环…
最后我想说的是, 即便你每个setValue后都调用sync, 在一些系统中仍然有丢失数据的可能,需要使用系统sync或FlushFileBuffers进行同步, Good Luck!