bool DFileManager::ManageConflictInCopy(QString& strTargetFile, QString strTargetDir, QString strConfictMode){
QDir dirtgt(strTargetDir);
if(!dirtgt.exists() && !dirtgt.mkpath(strTargetDir)){
ShowWarning(NULL, tr("警告"), tr(QString("目标目录%1不存在。").arg(strTargetDir).toUtf8()), QDialogButtonBox::Ok);
return false;
}
if (strConfictMode == "cover" && CheckFilePath(strTargetFile)){ // 重名文件覆盖
QMessageBox::StandardButton reply = ShowQuestion(NULL, tr("提问"), tr("目标目录已存在指定文件,确认覆盖?"), QDialogButtonBox::Yes|QDialogButtonBox::No, QDialogButtonBox::Yes);
if (reply != QMessageBox::Yes){
return false;
}
}
else if(strConfictMode == "rename" && CheckFilePath(strTargetFile)){ // 重名文件自动重命名
QString strTargetPath = strTargetFile;
QFileInfo infotgt(strTargetFile);
QString strtgtdir = infotgt.absolutePath();
QString strtgtbasename = infotgt.baseName();
QString strtgtsuffix = infotgt.completeSuffix();
int cnt = 0;
while(dirtgt.exists(strTargetFile)){
strTargetPath = strtgtdir + strtgtbasename + "_" + QString::number(++cnt) + strtgtsuffix; // 新路径拼接
}
strTargetFile = strTargetPath;
}
// 没有冲突 或 用户确认覆盖
return true;
}
Trick: QT解决文件冲突两种方式(覆盖、自动重命名)
最新推荐文章于 2024-10-10 11:20:42 发布