QT利用QTreeWidget显示文件夹中的所有子文件夹和文件,并把文件夹设置为根节点,把文件设置为其他所在文件夹的子节点,请给我完整代码
时间: 2024-02-03 16:13:19 浏览: 63
下面是一个简单的示例代码,它利用 QTreeWidget 显示了文件夹中的所有子文件夹和文件,并将文件夹设置为根节点,文件设置为其他文件夹的子节点:
```cpp
#include <QApplication>
#include <QDir>
#include <QFileInfoList>
#include <QTreeWidgetItem>
#include <QTreeWidget>
void addSubDirs(QTreeWidgetItem *parentItem, const QString &path)
{
QDir dir(path);
QFileInfoList files = dir.entryInfoList(QDir::Files);
QFileInfoList dirs = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot);
foreach (QFileInfo fileInfo, files) {
QTreeWidgetItem *item = new QTreeWidgetItem(parentItem, QStringList(fileInfo.fileName()));
parentItem->addChild(item);
}
foreach (QFileInfo dirInfo, dirs) {
QTreeWidgetItem *item = new QTreeWidgetItem(parentItem, QStringList(dirInfo.fileName()));
addSubDirs(item, dirInfo.filePath());
parentItem->addChild(item);
}
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QTreeWidget treeWidget;
treeWidget.setHeaderLabels(QStringList() << "Name");
QDir rootDir("/path/to/root/dir");
QTreeWidgetItem *rootItem = new QTreeWidgetItem(&treeWidget, QStringList(rootDir.dirName()));
addSubDirs(rootItem, rootDir.path());
treeWidget.addTopLevelItem(rootItem);
treeWidget.show();
return app.exec();
}
```
在这个示例代码中,`addSubDirs` 函数用于递归地遍历文件夹并添加子节点。`main` 函数中,我们创建了一个 `QTreeWidget`,并在其中添加了一个根节点,然后调用 `addSubDirs` 函数添加所有子节点,并将它们添加到根节点下。
阅读全文