2015-01-03 18 views
5

Come eliminare una cartella e tutti i suoi contenuti con Qt?Cancellare una cartella e tutti i suoi contenuti con Qt?

Ho provato ad utilizzare:

QFile::remove(); 

ma sembra che elimina solo un file per volta.

+1

Questo è un duplicato di questa domanda qui: http://stackoverflow.com/questions/11050977/removing-a-non-empty-folder-in-qt –

+1

@InnocentBystander ti ha battuto di 25 secondi: P –

+0

@RahulManne , +1 –

risposta

14

Per Qt5 c'è QDir::removeRecursively:

QDir dir("C:\\Path\\To\\Folder\\Here"); 
dir.removeRecursively(); 

Per Qt4 o basso è possibile utilizzare una funzione revursive che cancella ogni file:

bool removeDir(const QString & dirName) 
{ 
    bool result = true; 
    QDir dir(dirName); 

    if (dir.exists(dirName)) { 
     Q_FOREACH(QFileInfo info, dir.entryInfoList(QDir::NoDotAndDotDot | QDir::System | QDir::Hidden | QDir::AllDirs | QDir::Files, QDir::DirsFirst)) { 
      if (info.isDir()) { 
       result = removeDir(info.absoluteFilePath()); 
      } 
      else { 
       result = QFile::remove(info.absoluteFilePath()); 
      } 

      if (!result) { 
       return result; 
      } 
     } 
     result = dir.rmdir(dirName); 
    } 
    return result; 
} 

come indicato here.

+1

Ho eliminato l'intera directory contiene circa 700 file di codice sorgente, per fortuna mi sono impegnato a svn un giorno prima. Il 'QDir :: NoDotAndDotDot' è molto importante, altrove salta un livello di altezza e poi cancellerà tutto lì – Phiber

Problemi correlati