Domanda

Sto cercando di eseguire il codice di copia dei file in altro thread in modo che non possa congelare la GUI dell'applicazione.

ho scoperto che non sembra al lavoro in un thread separato.

Perché non funziona?

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;
}
È stato utile?

Soluzione

Dal momento che hai fatto non è il codice postale, posso solo cercare di indovinare qual è il problema. Qt ha una funzione statica:

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

C'è anche una copia che non è statico:

bool    copy ( const QString & newName )

Entrambi fallirà se il file definito da newName esiste già, vale a dire. file esistente non verrà sovrascritto. Inoltre, forse il percorso non esiste. Senza una parte del codice è difficile indovinare qual è il problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top