Qt递归获取文件下所有文件名并按树结构放进TreeWidget中
时间: 2023-11-28 20:48:05 浏览: 83
可以使用QDir类来递归获取文件夹下所有文件名,然后使用QTreeWidget来展示树形结构。
以下是示例代码:
```cpp
void MainWindow::traverseFolder(const QString& path, QTreeWidgetItem* parent)
{
QDir dir(path);
QFileInfoList fileList = dir.entryInfoList(QDir::Files);
foreach (QFileInfo fileInfo, fileList)
{
QTreeWidgetItem* item = new QTreeWidgetItem(parent);
item->setText(0, fileInfo.fileName());
parent->addChild(item);
}
QFileInfoList folderList = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot);
foreach (QFileInfo fileInfo, folderList)
{
QTreeWidgetItem* item = new QTreeWidgetItem(parent);
item->setText(0, fileInfo.fileName());
parent->addChild(item);
traverseFolder(fileInfo.absoluteFilePath(), item);
}
}
void MainWindow::on_pushButton_clicked()
{
QString rootPath = QFileDialog::getExistingDirectory(this, tr("Open Directory"), "/home", QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
if (rootPath.isEmpty())
return;
ui->treeWidget->clear();
QTreeWidgetItem* rootItem = new QTreeWidgetItem(ui->treeWidget);
rootItem->setText(0, rootPath);
ui->treeWidget->addTopLevelItem(rootItem);
traverseFolder(rootPath, rootItem);
}
```
其中,traverseFolder函数用于递归遍历文件夹,将文件名添加到QTreeWidget中。on_pushButton_clicked函数用于处理点击按钮事件,选择文件夹并调用traverseFolder函数。
阅读全文