这篇文章主要为大家详细介绍了如何利用QDir实现删除选定文件目录下的空文件夹功能,文中的示例代码讲解详细,感兴趣的小伙伴可以动手尝试一下
一、项目介绍
本文介绍利用QDir删除选定文件目录下的所有空文件夹。
二、项目基本配置
新建一个Qt案例,项目名称为“DelTest”,基类选择“QWidget”,点击选中创建UI界面复选框,完成项目创建。
三、UI界面设置
UI界面如下:

| 序号 | 名称 | 类型 | 属性 |
|---|---|---|---|
| ① | pbn_del | QPushButton | text:请选择要删除的目录 |
四、主程序实现
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则表示删除失败:
/**************************************************
* 功能:删除空的文件夹
* 输入参数:
* qstrDirPath:文件夹路径
* 返回值:
* 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删除空文件夹内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
织梦狗教程
本文标题为:利用QDir实现删除选定文件目录下的空文件夹
基础教程推荐
猜你喜欢
- 全面了解C语言 static 关键字 2023-03-26
- C语言实现宾馆管理系统课程设计 2023-03-13
- centos 7 vscode cmake 编译c++工程 2023-09-17
- [C语言]二叉搜索树 2023-09-07
- 带你深度走入C语言取整以及4种函数 2022-09-17
- C++实战之二进制数据处理与封装 2023-05-29
- C语言编程C++旋转字符操作串示例详解 2022-11-20
- [c语言-函数]不定量参数 2023-09-08
- C++实现ETW进行进程变动监控详解 2023-05-15
- C语言 详解字符串基础 2023-03-27
