QT利用QTreeWidget显示文件夹中的所有子文件夹和文件,并把文件夹设置为根节点,把文件设置为其所在文件夹的子节点,以及全部设置复选框,请给我完整代码
时间: 2023-12-20 13:07:04 浏览: 123
QT treeWidget 加载指定路径所有文件夹和文件
下面是一个基本的实现示例,可以根据自己的需求进行修改:
```cpp
#include <QApplication>
#include <QTreeWidget>
#include <QTreeWidgetItem>
#include <QDir>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTreeWidget treeWidget;
treeWidget.setColumnCount(1);
treeWidget.setHeaderLabel("Files and Folders");
QTreeWidgetItem *rootItem = new QTreeWidgetItem(&treeWidget);
rootItem->setText(0, "Root Folder");
rootItem->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
rootItem->setCheckState(0, Qt::Unchecked);
QDir rootDir("C:/"); // 设置根目录
QStringList folders = rootDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot); // 获取所有子文件夹
foreach(QString folder, folders)
{
QTreeWidgetItem *folderItem = new QTreeWidgetItem(rootItem);
folderItem->setText(0, folder);
folderItem->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
folderItem->setCheckState(0, Qt::Unchecked);
QDir subDir(rootDir.filePath(folder));
QStringList files = subDir.entryList(QDir::Files); // 获取文件夹中的所有文件
foreach(QString file, files)
{
QTreeWidgetItem *fileItem = new QTreeWidgetItem(folderItem);
fileItem->setText(0, file);
fileItem->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
fileItem->setCheckState(0, Qt::Unchecked);
}
}
treeWidget.expandAll();
treeWidget.show();
return a.exec();
}
```
这段代码将会在界面上显示一个 `QTreeWidget`,根节点为指定的根目录,子节点为根目录下的所有文件夹和文件。所有节点都设置了复选框,并且可以展开和折叠。
阅读全文