#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void on_pushButton_clicked(); private: Ui::MainWindow *ui; void showDir (QTreeWidgetItem * target, QDir dir); }; #endif // MAINWINDOW_H #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } #include void MainWindow::showDir (QTreeWidgetItem * target, QDir dir) { QFileInfoList list = dir.entryInfoList (QDir::NoDotAndDotDot | QDir::AllEntries, QDir::Name); for (QFileInfo info : list) { QTreeWidgetItem * node = new QTreeWidgetItem; node->setText (0, info.fileName()); node->setToolTip(0, info.absoluteFilePath()); QColor color; if (info.isDir()) color = QColor ("red"); else color= QColor ("blue"); node->setForeground (0, color); target->addChild (node); if (info.isDir()) showDir (node, QDir (info.absoluteFilePath())); } } void MainWindow::on_pushButton_clicked() { QDir dir (".."); QTreeWidgetItem * item = new QTreeWidgetItem; item->setText (0, dir.absolutePath()); item->setForeground (0, QColor ("red")); ui->treeWidget->addTopLevelItem (item); showDir (item, dir); item->setExpanded (true); }