#include "SaveTask.h" // 实际的 run() 方法在 SaveTask.cpp 中实现 void SaveTask::run() { if (m_rawData.isEmpty()) { qWarning("SaveTask received empty raw data. Aborting save."); return; } // --- 耗时的文件 I/O 操作在此处执行,不阻塞主线程 --- QString timestamp = QDateTime::currentDateTime().toString("yyyyMMdd_hhmmsszzz"); // 构造文件名:时间戳_宽度x高度_像素类型.raw QString filename = QString("%1.raw") .arg(timestamp); // 设置保存路径 QString savePath = QDir::currentPath() + "/RawSavedImages/"; QDir dir(savePath); if (!dir.exists()) { dir.mkpath("."); } QString fullPath = savePath + filename; QFile file(fullPath); if (file.open(QIODevice::WriteOnly)) { // 直接将 QByteArray 中的原始字节写入文件 qint64 bytesWritten = file.write(m_rawData); file.close(); if (bytesWritten == m_rawData.size()) { // 保存成功,可以发送日志或简单地使用 qInfo() // qInfo() << "Raw data saved successfully to:" << fullPath; } else { qWarning() << QString("Error: Only %1 of %2 bytes written to %3") .arg(bytesWritten).arg(m_rawData.size()).arg(fullPath); } } else { qWarning() << "Error opening file for writing:" << fullPath; } }