当前位置: 首页 > article >正文

Qt下载模板到本地文件内容丢失问题

上源码

关键点已标注在源码中 A, B…

// 保存的文件路径后缀
    QString dateTime = Myapp::getCurrentTimeDescYMDHms().replace(" ", "").replace("-", "").replace(":", "");
    // 临时文件名称
    QString newFileName = QString(QUuid::createUuid().toString().replace("{", "").replace("}", "").replace("-", ""));
    // 复制文件
    QFile::copy(tmplateFile, newFileName);
    // 获取下载的文件路径
    QString savePath = QFileDialog::getSaveFileName(this, "保存模板文件",
                                                    saveFileName.replace(".xlsx", dateTime+".xlsx"),
                                                    "Excel 文件 (*.xlsx)");
    if (!savePath.isEmpty()) {
        // 使用局部作用域确保xlsx对象及时析构
        QXlsx::Document xlsx(newFileName);
        if (xlsx.saveAs(savePath)) {
            qDebug() << "下载成功";
        } else {
            qDebug() << "保存失败";
            MyHelper::ShowMessageBoxError(tr("保存失败!"));
        }
        // 延迟删除确保操作系统释放锁. 此步骤最为关键
        QTimer::singleShot(100, [newFileName]() {
            QFile tmpFile(newFileName);
            if (tmpFile.exists()) {
                tmpFile.setPermissions(QFile::WriteOwner | QFile::ReadOwner);
                if (tmpFile.remove()) {
                    qDebug() << "临时文件删除成功";
                } else {
                    qDebug() << "最终删除失败:" << tmpFile.errorString();
                }
            }
        });
    }

http://www.kler.cn/a/613617.html

相关文章:

  • 2025年最新自动化/控制保研夏令营预推免面试真题分享(东南大学苏州校区/华东理工/南航/天大)
  • Redis 中的过期策略和内存淘汰策略
  • 项目-苍穹外卖(十六) Apache ECharts+数据统计
  • Vue学习笔记集--pnpm包管理器
  • 企业高效访问海外SAAS应用,SD-WAN出口网络专线提高办公效率
  • 蓝桥杯备考:DFS之数独
  • Unity高渲染管线
  • linux0.11内核源码修仙传第十一章——硬盘初始化
  • 数据库约束、常见语句等
  • VGG 改进:添加ScConv空间与通道特征重构卷积
  • pip show protobuf ValueError: invalid literal for int() with base 10: ‘‘
  • 【redis】前缀树 trie-radix tree-rax
  • 协作机械臂需要加安全墙吗? 安全墙 光栅 干涉区
  • 详细比较StringRedisTemplate和RedisTemplate的区别及使用方法,及解决融合使用方法
  • Go语言nil原理深度解析:底层实现与比较规则
  • ReAct: Synergizing Reasoning and Acting in Language Models
  • 数字化转型1061丨某著名企业新零售云业务中台总体解决方案(文末有下载方式)
  • ElasticSearch在Windows单节点部署及使用
  • 云原生周刊:Ingress-NGINX 漏洞
  • JDBC FetchSize不生效,批量变全量致OOM问题分析