mainwindow.h public: void showDir (QString path); private: void showSubdir (QTreeWidgetItem * branch, QDir dir); mainwindow.cpp #include "mainwindow.h" #include #include #include using namespace std; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { setupUi(this); showDir (".."); } void MainWindow::showDir (QString path) { QDir dir0 (path); QDir dir (dir0.absolutePath()); auto branch = new QTreeWidgetItem; branch->setText (0, dir.dirName ()); branch->setToolTip (0, dir.absolutePath()); treeWidget->addTopLevelItem (branch); showSubdir (branch, dir); } void MainWindow::showSubdir (QTreeWidgetItem *branch, QDir dir) { // cout << dir.absolutePath().toStdString() << endl; for (auto f : dir.entryInfoList (QDir::NoDotAndDotDot | QDir::Files | QDir::Dirs)) { auto item = new QTreeWidgetItem; item->setText (0, f.fileName()); item->setToolTip (0, f.absoluteFilePath()); branch->addChild (item); if (f.isDir()) showSubdir (item, QDir (f.absoluteFilePath())); } branch->setExpanded (true); } void MainWindow::on_action_Quit_triggered() { close (); }