QDir 类提供对目录结构及其内容的访问,QDir 用于操作路径名、访问有关路径和文件的信息以及操作底层文件系统,它也可以用来访问Qt的资源系统。
Qt使用“/”作为通用目录分隔符,就像URL中的“/”用作路径分隔符一样。如果您始终使用“/”作为目录分隔符,Qt将翻译您的路径以符合底层操作系统。QDir 可以使用相对路径或绝对路径指向文件。绝对路径以目录分隔符开头(可以选择在 Windows 下以驱动器规范开头)。相对文件名以目录名或文件名开头,并指定相对于当前目录的路径。
注意:以冒号 (:) 开头的路径始终被认为是绝对的,因为它们表示QResurce
构造函数:

常用函数:
| absoluteFilePath() | 返回目录中文件的绝对路径名。不检查目录中是否确实存在该文件 |
| absolutePath() | 返回绝对路径 |
| addSearchPath() | 将路径添加到前缀的搜索路径 |
| canonicalPath() | 返回规范路径,即没有符号链接或冗余 “.” 或 “..” 元素的路径 |
| cd() | 修改目录名 |
| cdUp() | 上移一个目录 |
| clearPath() | 返回规范化目录分隔符的路径 |
| count() | 返回该目录中目录和文件的个数 |
| current() | 返回当前目录 |
| currentPath() | 返回当前目录的绝对路径 |
| dirName() | 返回目录名称 |
| drives() | 返回此系统上根目录的列表 |
| entryInfoList() | 返回目录中所有文件和目录的QFileInfo对象列表 |
| entryList() | 返回目录中所有文件和目录的名称列表 |
| exist() | 判断目录是否存在 |
| filePath() | 返回目录文件中的路径名 |
| fromNativeSeparators (QString) | 把路径转换为以'/'作为分割符的路径 |
| home() | 返回用户的主目录 |
| homePath() | 返回用户主目录的绝对路径 |
| isEmpty() | 目录是否为空 |
| isRoot() | 是否为根目录 |
| makeAbsolute() | 把路径转化为绝对路径 |
| mkdir() | 创建一个子目录 |
| rmdir() | 删除空目录 |
| path() | 返回路径,这可能包含符号链接 |
| refresh() | 刷新 |
| remove() | 删除文件 |
| removeRecursively() | 删除目录,删除里面的所有内容 |
| root() | 返回根目录 |
| rootPath() | 返回根目录路径 |
| temp() | 返回临时目录 |
设置函数:
| setCurrent(QString &path) | 将应用程序的当前工作目录设置为path |
| setFilter() | 设置筛选器 |
| setNameFilters(QStringList nameFilters) | 设置多个筛选 |
| setSoring() | 设置排序顺序 |
QDir::Filters(过滤器)
| QDir::Dirs | 列出与筛选器匹配的目录 |
| QDir::AllDirs | 列出所有目录;即不要将过滤器应用于目录名称 |
| QDir::Files | 列出文件 |
| QDir::Drives | 列出磁盘驱动器 |
| QDir::NoSymLinks | 不要列出符号链接 |
| QDir::NoDotAndDotDot | 不要列出特殊条目“.”和“..” |
| QDir::NoDot | 不要列出特殊条目“.” |
| QDir::NoDotDot | 不要列出特殊条目“..” |
| QDir::AllEntries | 列出目录、文件、驱动器和符号链接 |
| QDir::Readable QDir::Writable | 列出应用程序具有读取访问权限的文件 列出应用程序具有写入访问权限的文件 需要目录和文件配合使用 |
| QDir::Executable | 列出应用程序具有执行访问权限的文件。可执行文件值需要与目录或文件结合使用。 |
| QDir::Modified | 仅列出已修改的文件 |
| QDir::Hidden | 列出隐藏文件 |
| QDir::System | 列出系统文件 |
| QDir::CaseSensitive | 筛选器应区分大小写 |
QDir::SortFlags(排序方式)
| QDir::Name | 按名称排序 |
| QDir::Time | 按时间(修改时间)排序 |
| QDir::Size | 按文件大小排序 |
| QDir::Type | 按文件类型(扩展名)排序 |
| QDir::Unsorted | 不要排序 |
| QDir::NoSort | 默认情况下不排序 |
| QDir::DirsFirst | 首先放置目录,然后放置文件 |
| QDir::DirsLast | 首先放置文件,然后放置目录 |
| QDir::Reversed | 反转排序顺序 |
| QDir::IgnoreCase | 排序不区分大小写 |
| QDir::LocaleAware | 使用当前区域设置对项目进行适当排序 |
目录的原样:

目录属性:
QDir dir("F:/text2");
qDebug()<<"目录的绝对路径"<<dir.absolutePath();
qDebug()<<"目录的规范路径"<<dir.canonicalPath();
qDebug()<<"目录的文件和目录个数"<<dir.count();
qDebug()<<"当前目录"<<dir.current();
qDebug()<<"当前目录路径"<<dir.currentPath();
qDebug()<<"返回主目录"<<dir.home();
qDebug()<<"返回主目录路径"<<dir.homePath();
qDebug()<<"修改目录名"<<dir.cd("text222");
qDebug()<<"上移一个目录"<<dir.cdUp();
qDebug()<<"目录的当前的绝对路径"<<dir.absolutePath();

获取整个目录内容:
QDir dir("F:/text2");
QListWidget *listwidget=new QListWidget(this);//创建一个列表控件
listwidget->setFixedSize(200,800);//设置大小
QStringList slist=dir.entryList();//获取目录里的内容
listwidget->addItems(slist);//添加目录里面的内容

使用过滤器:
entryList函数:

使用函数:
使用dir.entryList()
- 使用setFilter()
1.仅过滤掉隐藏文件
只过滤隐藏文件的话,需要使用dir.entryList(dir.filter()|QDir::NoDotAndDotDot);
使用 entryList()
注意:只过滤隐藏文件 不可以直接使用
QStringList slist=dir.entryList(QDir::NoDotAndDotDot);//错误
需要使用
QStringList slist=dir.entryList(dir.filter()|QDir::NoDotAndDotDot);//正确
使用 setFilter()
//dir.setFilter(QDir::NoDotAndDotDot);//错误
dir.setFilter(dir.filter()|QDir::NoDotAndDotDot);//正确
QStringList slist=dir.entryList();

2.设置多个过滤条件
设置多个条件的话就可以不使用dir.filter()|QDir::NoDotAndDotDot
获取目录中的文件夹:
使用 entryList()
QStringList slist=dir.entryList(QDir::NoDotAndDotDot|QDir::Dirs);
使用 setFilter()
dir.setFilter(QDir::NoDotAndDotDot|QDir::Dirs);
QStringList slist=dir.entryList();

获取目录中的文件:
使用 entryList()
QStringList slist=dir.entryList(QDir::NoDotAndDotDot|QDir::Files);
使用 setFilter()
dir.setFilter(QDir::NoDotAndDotDot|QDir::Files);
QStringList slist=dir.entryList();

设置多个筛选
使用:setNameFilters(QStringList nameFilters)可以细致的筛选文件,筛选多个文件后缀名
QDir dir("F:/text2");
QListWidget *listwidget=new QListWidget(this);//创建一个列表控件
listwidget->setFixedSize(200,800);//设置大小
QStringList filterlist;
filterlist<<"*.dll"<<"*txt";//筛选以dll和txt结尾的文件
dir.setNameFilters(filterlist);//设置筛选
QStringList slist=dir.entryList(dir.filter()|QDir::NoDotAndDotDot);
listwidget->addItems(slist);//添加目录里面的文件

两个筛选一起使用:
QDir dir("F:/text2");
QListWidget *listwidget=new QListWidget(this);//创建一个列表控件
listwidget->setFixedSize(200,800);//设置大小
QStringList filterlist;
filterlist<<"*.dll"<<"*txt";//筛选以dll和txt结尾的文件
QStringList slist=dir.entryList(filterlist,dir.filter()|QDir::NoDotAndDotDot);
listwidget->addItems(slist);//添加目录里面的文件
使用排序器:
QDir::SortFlagssort= NoSort
- 使用entryList()进行设置
- 使用setSorting()进行设置
按照大小进行排序:
entryList()进行设置
QStringList slist=dir.entryList(dir.filter(),QDir::Size);
setSorting()进行设置
dir.setSorting(QDir::Size);
QStringList slist=dir.entryList();

使用:下面的函数可以把以上三个功能一起使用
entryList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
也可以直接获得文件信息列表:
entryInfoList(const QStringList &nameFilters, QDir::Filtersfilters= NoFilter, QDir::SortFlagssort= NoSort) const
entryInfoList(QDir::Filtersfilters= NoFilter, QDir::SortFlagssort= NoSort) const




![[附源码]Python计算机毕业设计SSM金牛社区疫情防控系统(程序+LW)](https://img-blog.csdnimg.cn/417db15b077449b8b45f4073bfec11b4.png)
![[附源码]JAVA毕业设计老年人健康饮食管理系统(系统+LW)](https://img-blog.csdnimg.cn/47bec3a52da948c0b5e07b9a18165cf7.png)



![[附源码]计算机毕业设计车源后台管理系统](https://img-blog.csdnimg.cn/107c4e4b04f84972b751d7ef35584073.png)









