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

上源码

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

c++ 复制代码
// 保存的文件路径后缀
    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();
                }
            }
        });
    }
相关推荐
悦悦子a啊1 小时前
C++之string
开发语言·数据结构·c++
赛卡1 小时前
IPOF方法学应用案例:动态电压频率调整(DVFS)在AIoT芯片中的应用
开发语言·人工智能·python·硬件工程·软件工程·系统工程·ipof
网络大镖客1 小时前
JavaScript高级进阶(五)
开发语言·前端·javascript
API小爬虫2 小时前
利用 Python 爬虫按关键字搜索 1688 商品详情:实战指南
开发语言·爬虫·python
不当菜虚困2 小时前
JAVA设计模式——(九)工厂模式
java·开发语言·设计模式
柴郡猫乐园2 小时前
智能指针之设计模式5
开发语言·设计模式·智能指针
IT技术员2 小时前
【Java学习】Java的CGLIB动态代理:通俗解释与使用指南
java·开发语言·学习
IvanCodes2 小时前
Java 基础--流程控制语句
java·开发语言
白总Server2 小时前
智能座舱架构中芯片算力评估
linux·运维·服务器·开发语言·ai·架构·bash
wjm0410063 小时前
C++日更八股--first
java·开发语言·c++