Qt中树形结构显示目录结构

第一种,直接用QTreeWidget,这种情况用到QDir类,用递归实现,代码如下


   
   
   
   
  1. void LoadFiles(QString path, QTreeWidget *treewidget, QTreeWidgetItem *item)
  2. {
  3. QDir dir(path);
  4. if (!dir.exists()) return;
  5. dir.setFilter(QDir::Dirs | QDir::Files | QDir::NoSymLinks);
  6. QFileInfoList list = dir.entryInfoList();
  7. int size = list.size();
  8. for ( int i = 0; i < size; i++) {
  9. QFileInfo info = list.at(i);
  10. if (info.fileName() == "." || info.fileName() == "..") continue;
  11. if (info.isDir()) {
  12. QTreeWidgetItem *fileItem = new QTreeWidgetItem(QStringList() << info.fileName(), 0); //0表示目录
  13. if (treewidget == NULL) item->addChild(fileItem);
  14. else treewidget->addTopLevelItem(fileItem);
  15. LoadFiles(info.filePath(), NULL, fileItem);
  16. } else {
  17. QTreeWidgetItem *fileItem = new QTreeWidgetItem(QStringList() << info.fileName(), 1); //1表示是文件
  18. if (treewidget == NULL) item->addChild(fileItem);
  19. else treewidget->addTopLevelItem(fileItem);
  20. }
  21. }
  22. }

第二种,用QTreeView + QDirModel,这种比较简单,代码量小


   
   
   
   
  1. QDirModel *model = new QDirModel();
  2. ui.treeView->setModel(model);
  3. ui.treeView->setRootIndex(model->index( "c:/"));


 

Qt中树形结构显示目录结构_第1张图片

你可能感兴趣的:(QT5)