针对使用QSettings修改配置后强制重启导致配置文件大小为0的问题,以下是分步解决方案:
-
立即同步写入
在每次修改配置后,手动调用QSettings::sync()方法,确保数据及时写入磁盘:QSettings settings("MyCompany", "MyApp"); settings.setValue("key", "value"); settings.sync(); // 强制立即写入磁盘 -
启用原子性写入(避免文件截断)
QSettings 默认可能直接覆盖原文件,若写入过程中程序崩溃会导致文件损坏。改用“原子写入”策略:// 写入临时文件后再替换原文件(需手动处理) QSettings settings("MyCompany", "MyApp"); settings.setValue("key", "value"); settings.sync(); // 或者直接指定格式和存储路径,自行管理写入过程 QFile configFile("config.ini"); QFile tempFile("config.tmp"); if (tempFile.open(QIODevice::WriteOnly)) { // 将配置写入临时文件 QSettings tempSettings(tempFile.fileName(), QSettings::IniFormat); tempSettings.setValue("key", "value"); tempSettings.sync(); tempFile.close(); // 替换原文件 QFile::remove("config.ini"); QFile::copy("config.tmp", "config.ini"); } -
添加异常处理与析构保障
在程序退出或对

最低0.47元/天 解锁文章
2123

被折叠的 条评论
为什么被折叠?



