QSettings注意的事项

QSettings,很好用,也很易用,但在一些场景下(如程序异常退出、异常断电), 容易出现配置丢失的情况!

void QSettings::setValue(const QString & key, const QVariant & value)

setValue函数设置指定KEY的值,如果已存在则替换先前的值,但它并不立即回写文件,给断电、异常退出提供了丢失数据的机会!

void QSettings::sync()

sync函数负责回写,它会在QSettings析构函数中自动调用或事件循环中定期调用,一般不用手动调用。 这里有些坑, 一些辅助线程没有事件循环…

最后我想说的是, 即便你每个setValue后都调用sync, 在一些系统中仍然有丢失数据的可能,需要使用系统sync或FlushFileBuffers进行同步, Good Luck!

你可能感兴趣的:(QT)