第一种,直接用QTreeWidget,这种情况用到QDir类,用递归实现,代码如下
-
void LoadFiles(QString path, QTreeWidget *treewidget, QTreeWidgetItem *item)
-
{
-
QDir dir(path);
-
if (!dir.exists())
return;
-
-
dir.setFilter(QDir::Dirs | QDir::Files | QDir::NoSymLinks);
-
QFileInfoList
list = dir.entryInfoList();
-
int size =
list.size();
-
for (
int i =
0; i < size; i++) {
-
QFileInfo info =
list.at(i);
-
if (info.fileName() ==
"." || info.fileName() ==
"..")
continue;
-
-
if (info.isDir()) {
-
QTreeWidgetItem *fileItem =
new QTreeWidgetItem(QStringList() << info.fileName(),
0);
//0表示目录
-
if (treewidget ==
NULL) item->addChild(fileItem);
-
else treewidget->addTopLevelItem(fileItem);
-
LoadFiles(info.filePath(),
NULL, fileItem);
-
}
else {
-
QTreeWidgetItem *fileItem =
new QTreeWidgetItem(QStringList() << info.fileName(),
1);
//1表示是文件
-
if (treewidget ==
NULL) item->addChild(fileItem);
-
else treewidget->addTopLevelItem(fileItem);
-
}
-
}
-
}
第二种,用QTreeView + QDirModel,这种比较简单,代码量小
-
QDirModel *model =
new QDirModel();
-
ui.treeView->setModel(model);
-
ui.treeView->setRootIndex(model->index(
"c:/"));