QT下实现将图片从一个文件拷贝到另一个文件夹

时间:2022-06-14 21:40:05

由于项目的需要,从MFC转移到QT进行开发

首先要实现,MFC上的CString字符串操作要换成QString

将图片从一个文件拷贝到另一个文件夹, 以前是这样写的:

//void folderMove(CStringW origPath, CStringW goalPath)
//{
// SHFILEOPSTRUCT fop;
// ZeroMemory(&fop, sizeof fop);
// fop.wFunc = FO_COPY;
// //origPath += '\0';
// //goalPath += '\0';
// fop.pFrom = origPath;
// fop.pTo = goalPath;
// SHFileOperation(&fop);
//}

改成了如下操作:

bool folderMove(QString sourceDir, QString toDir, bool coverFileIfExist)
{
 //toDir.replace("\\", "/");
 if (sourceDir == toDir){
  return true;
 }
 if (!QFile::exists(sourceDir)){
  return false;
 }
 QDir *createfile = new QDir;
 bool exist = createfile->exists(toDir);
 if (exist){
  if (coverFileIfExist){
   createfile->remove(toDir);
  }
 }//end if 

 if (!QFile::copy(sourceDir, toDir))
 {
  return false;
 }
 return true;
}


但是,没有任何图像被移动,原来,QT移动文件,不但需要指定原始地址的完全路径,而且需要指定目标地址的文件路径,但是目前无法得到被移动图片的

具体文件名,所以用如下函数获得图片的文件名:

 QString file_fullpath = ".\\a\\1.bmp", file_name;
 QFileInfo  info;
 //file_fullpath = QFileDialog::getOpenFileName(this);
 info = QFileInfo(file_fullpath);
 file_name = info.fileName();