删除Qt中的非空文件夹

Ken*_*nta 31 qt qt4

如何删除Qt中的非空文件夹.

hps*_*use 51

如果您使用Qt 5,则有QDir :: removeRecursively().


Jud*_*den 40

首先递归删除目录的内容.这是一篇博文,里面有示例代码.我已经包含了相关的代码段.

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

    if (dir.exists()) {
        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 = QDir().rmdir(dirName);
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

编辑:上面的答案是针对Qt 4.如果你使用的是Qt 5,那么这个功能是用QDir :: removeRecursively()方法内置到QDir中的.