31

Qt で空でないフォルダーを削除する方法。

4

2 に答える 2

53

Qt 5 を使用している場合は、QDir::removeRecursively()があります。

于 2013-06-13T08:24:45.010 に答える
42

最初にディレクトリの内容を再帰的に削除します。これを行うためのサンプル コードを含むブログ投稿を次に示します。関連するコード スニペットを含めました。

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;
}

編集: 上記の回答は Qt 4 に対するものでした。Qt 5 を使用している場合、この機能はQDir::removeRecursively()メソッドを使用して QDir に組み込まれています。

于 2012-06-15T12:53:14.427 に答える