C++/qt QFileDialog获取所有文件包含子目录下的文件
时间: 2023-12-22 19:03:09 浏览: 54
可以使用递归函数来实现获取所有文件包含子目录下的文件。
下面是一个示例代码:
```cpp
void getAllFiles(const QString& path, QStringList& fileList)
{
QDir dir(path);
QFileInfoList fileInfoList = dir.entryInfoList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);
foreach (QFileInfo fileInfo, fileInfoList) {
if (fileInfo.isFile()) {
fileList.append(fileInfo.absoluteFilePath());
}
else if (fileInfo.isDir()) {
getAllFiles(fileInfo.absoluteFilePath(), fileList);
}
}
}
```
这个函数接受一个路径和一个字符串列表,用于存储所有文件的绝对路径。函数首先创建一个QDir对象来访问指定的路径。然后,使用entryInfoList()函数列出目录中的所有文件和子目录。接下来,使用foreach循环遍历每个文件信息。如果是文件,则将其绝对路径添加到文件列表中。如果是子目录,则递归调用getAllFiles()函数获取该子目录中的所有文件。
相关问题
QFileDialog获取所有文件包含子目录下的
要获取目录及其子目录下的所有文件,可以使用QDir类的遍历方法,例如:
```python
from PyQt5.QtWidgets import QFileDialog
from PyQt5.QtCore import QDir
path = QFileDialog.getExistingDirectory(None, "选择文件夹", "/")
if path:
# 获取目录及其子目录下的所有文件
files = []
for file_name in QDir(path).entryList(['*'], QDir.Files | QDir.NoSymLinks):
files.append(path + '/' + file_name)
for dir_name in QDir(path).entryList(QDir.AllDirs | QDir.NoDotAndDotDot):
files += [os.path.join(dp, f) for dp, dn, filenames in os.walk(os.path.expanduser(dir_name)) for f in filenames]
print(files)
```
这里用到了os模块的walk方法来遍历子目录下的文件,并将其添加到结果列表中。
QtWidgets.QFileDialog.getOpenFileName获取的是文件路径 如何获得该目录下的文件名
可以使用 Python 的 `os` 模块来获取该目录下的文件名。具体操作如下:
```python
import os
# 获取目录路径
dir_path = QtWidgets.QFileDialog.getExistingDirectory(None, "Select Directory", "./")
# 获取该目录下的所有文件名
file_names = os.listdir(dir_path)
# 打印所有文件名
print(file_names)
```
其中,`os.listdir()` 函数可以获取指定目录下的所有文件名,并返回一个列表。需要注意的是,该函数会返回包括子目录中的所有文件名,如果只需要获取当前目录下的文件名,可以使用 `os.listdir(dir_path)`。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)