在Qt6中,你可以使用QFileDialog类来弹出对话框让用户选择保存ZIP文件的地址和名称。以下是一个示例代码:
#include <QApplication>
#include <QFileDialog>
#include <QMessageBox>
#include <QFile>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 弹出文件保存对话框
QString destinationFilePath = QFileDialog::getSaveFileName(nullptr, "Save ZIP File", "", "ZIP Files (*.zip)");
if (destinationFilePath.isEmpty())
return 0;
// 添加默认的ZIP文件扩展名
if (!destinationFilePath.endsWith(".zip", Qt::CaseInsensitive))
destinationFilePath += ".zip";
// 拷贝文件
QFile sourceFile("path/to/source.zip");
QFile destinationFile(destinationFilePath);
if (!sourceFile.exists()) {
QMessageBox::critical(nullptr, "Error", "Source file does not exist.");
return 0;
}
if (!sourceFile.open(QIODevice::ReadOnly)) {
QMessageBox::critical(nullptr, "Error", "Failed to open source file for reading.");
return 0;
}
if (!destinationFile.open(QIODevice::WriteOnly)) {
QMessageBox::critical(nullptr, "Error", "Failed to open destination file for writing.");
return 0;
}
qint64 bytesCopied = destinationFile.write(sourceFile.readAll());
if (bytesCopied == -1) {
QMessageBox::critical(nullptr, "Error", "Failed to write data to destination file.");
return 0;
}
sourceFile.close();
destinationFile.close();
QMessageBox::information(nullptr, "Success", "ZIP file copied successfully.");
return app.exec();
}
在这个例子中,我们使用QFileDialog::getSaveFileName
函数来弹出文件保存对话框,并且限制用户只能选择ZIP文件作为保存类型。然后,我们检查了destinationFilePath
是否以.zip
结尾,并添加了默认的扩展名。
同样地,请将示例代码中的"path/to/source.zip"
替换为实际的源文件路径。
希望这个例子对你有所帮助!
内容由零声教学AI助手提供,问题来源于学员提问