广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >利用QDir实现删除选定文件目录下的空文件夹
  • 924
分享到

利用QDir实现删除选定文件目录下的空文件夹

QDir删除空文件夹QtQDir删除空文件夹Qt删除空文件夹 2022-11-13 13:11:52 924人浏览 安东尼
摘要

目录一、项目介绍二、项目基本配置三、UI界面设置四、主程序实现4.1 widget.h头文件4.2 widget.cpp源文件五、效果演示一、项目介绍 本文介绍利用QDir删除选定文

一、项目介绍

本文介绍利用QDir删除选定文件目录下的所有空文件夹。

二、项目基本配置

新建一个Qt案例,项目名称为“DelTest”,基类选择“QWidget”,点击选中创建UI界面复选框,完成项目创建。

三、UI界面设置

UI界面如下:

序号名称类型属性
pbn_delQPushButtontext:请选择要删除的目录

四、主程序实现

4.1 widget.h头文件

头文件中只需声明按钮点击槽函数:

private slots:
    void on_pbn_del_clicked();

4.2 widget.cpp源文件

定义函数checkFileOrDirExist检查目录是否存在:

bool checkFileOrDirExist(const QString qstrFileDirOrPath)
{
    bool bRet = false;
    QFileInfo objFileInfo(qstrFileDirOrPath);
    if(objFileInfo.isFile())
    {
        bRet = objFileInfo.exists();
    }
    else if(objFileInfo.isDir())
    {
        bRet = objFileInfo.exists();
    }
    else
    {
        bRet = false;
    }

    return bRet;
}

定义clearEmptyFolder用于删除空的文件夹,返回的类型为bool类型若为true则表示删除成功,若为false则表示删除失败:


bool clearEmptyFolder(const QString& qstrDirPath)
{
    bool bRet = true;

    do
    {
        if(!checkFileOrDirExist(qstrDirPath))
        {
            bRet = true;
            break;
        }

        QDir qdrPath(qstrDirPath);
        qdrPath.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden); //设置过滤器
        QFileInfoList lstFileInfo = qdrPath.entryInfoList();   //获取所有文件信息
        foreach(QFileInfo objFileInfo, lstFileInfo)
        {
            if(objFileInfo.isDir())
            {
                QString qstrSubFilePath = objFileInfo.absoluteFilePath();
                clearEmptyFolder(qstrSubFilePath);

                QDir qdrSubPath(qstrSubFilePath);
                qdrSubPath.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden);
                QFileInfoList qlstFileInfo =  qdrSubPath.entryInfoList();
                if(qlstFileInfo.count() <= 0)
                {
                    qDebug()<<QString("remove empty dir: %1.").arg(qstrSubFilePath);
                    qdrSubPath.rmdir(qstrSubFilePath);
                }
            }
        }

    }while(0);

    return bRet;
}

按钮点击槽函数:

void Widget::on_pbn_del_clicked()
{
    //选择文件目录
    QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"),
                                                    "",
                                                    QFileDialog::ShowDirsOnly
                                                    | QFileDialog::DontResolveSymlinks);
    qDebug()<<dir;
    bool isok=clearEmptyFolder(dir);
    if(isok)
        QMessageBox::infORMation(this,"success","删除完成");
    else
        QMessageBox::information(this,"error","错误");
}

五、效果演示

完整效果如下:

到此这篇关于利用QDir实现删除选定文件目录下的空文件夹的文章就介绍到这了,更多相关QDir删除空文件夹内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 利用QDir实现删除选定文件目录下的空文件夹

本文链接: https://www.lsjlt.com/news/171403.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作