Pregunta

Estoy tratando de ejecutar código de copiar archivos en otro hilo de modo que no se puede congelar la interfaz gráfica de usuario de la aplicación.

He encontrado que no parecen funcionar en un hilo separado.

¿Por qué no funciona?

void CopyOperation::run()
{ 
    CopyFilesToFolder(list,sFolder); 
}

bool CopyOperation::CopyFilesToFolder(const QStringList &oFileList,const QString 
&sTargetFolder)
{

if(sTargetFolder.isEmpty())
 {

    status = false;
    return false;
}

QDir dir(sTargetFolder);

if(!dir.exists()) dir.mkdir(sTargetFolder);

QString sOldDirPath = dir.currentPath();

//if(!dir.setCurrent(sTargetFolder)) return false;

QFile file;
status = true;

foreach(QString sFileName,oFileList)
{
    file.setFileName(sFileName);

    QFileInfo info(sFileName);

    QString newfile =  sTargetFolder + "/" +  info.fileName();

    qDebug() << "\n name = " << newfile;

    if(!QFile::copy(sFileName,newfile))
    //if(!file.copy(newfile))
    {
        qDebug() << "\n File copy failed .. " + file.fileName() + " Error : " + file.errorString();
        status = false;
        break;
    }

}

qDebug() << "\n Result .. " << file.errorString() << "code " <<  file.error();
//dir.setCurrent(sOldDirPath);

return status;
}
¿Fue útil?

Solución

Desde que hiciste no de código postal, sólo puedo tratar de adivinar cuál es el problema. Qt tiene una función estática:

bool copy ( const QString & fileName, const QString & newName )

También hay una copia que no es estática:

bool    copy ( const QString & newName )

Los dos fallará si el archivo definido por newName ya existe, es decir. archivo existente no se sobrescribirá. Además, tal vez no existe camino. Sin una cierta porción de código es difícil de adivinar cuál es el problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top