C++/qt QFileDialog获取所有文件包含子目录下的文件
时间: 2023-12-22 21:03:09 浏览: 147
可以使用递归函数来实现获取所有文件包含子目录下的文件。
下面是一个示例代码:
```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打开一个文件夹,显示里面所有的文件和文件夹 C++
在Qt库中,QFileDialog是一个方便的工具类,用于在用户界面上弹出一个文件选择对话框,包括文件和目录的选择。如果你想在C++中用QFileDialog打开一个文件夹并显示其内容,你可以这样做:
```cpp
#include <QApplication>
#include <QFileDialog>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QString dirPath = QFileDialog::getExistingDirectory(
this, // 对话框所属的对象(通常是你创建的窗口)
"选择文件夹", // 标题
"." // 初始路径,`.`表示当前工作目录
);
if (!dirPath.isEmpty()) { // 如果用户选择了某个目录
qDebug() << "选定的文件夹路径:" << dirPath; // 打印路径到控制台
// 现在你可以遍历这个路径下的文件和子目录
// ... (这里可以添加处理文件夹内容的具体代码)
}
return app.exec();
}
```
在这个例子中,`getExistingDirectory()`函数会打开一个对话框让用户选择一个文件夹,并返回用户的选项。如果用户未做选择,`dirPath`将为空。
阅读全文