QSettings修改配置后强制重启应用导致配置文件大小为0问题

针对使用QSettings修改配置后强制重启导致配置文件大小为0的问题,以下是分步解决方案:

  1. 立即同步写入
    在每次修改配置后,手动调用 QSettings::sync() 方法,确保数据及时写入磁盘:

    QSettings settings("MyCompany", "MyApp");
    settings.setValue("key", "value");
    settings.sync(); // 强制立即写入磁盘
    
  2. 启用原子性写入(避免文件截断)
    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");
    }
    
  3. 添加异常处理与析构保障
    在程序退出或对

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值