#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT private: QTreeWidgetItem * current; public: void open (QString s); void add (QString s); void close (); public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void on_pushButton_clicked(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H #include "mainwindow.h" #include "ui_mainwindow.h" void MainWindow::open(QString s) { QTreeWidgetItem * item = new QTreeWidgetItem; item->setText (0, s); item->setForeground (0, QColor ("blue")); if (current == nullptr) ui->treeWidget->addTopLevelItem (item); else current->addChild (item); current = item; } void MainWindow::add(QString s) { open (s); close (); } void MainWindow::close() { if (current != nullptr) current = current->parent(); } MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { current = nullptr; ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } #include void MainWindow::on_pushButton_clicked() { QDir dir (".."); open (dir.absolutePath()); auto list = dir.entryInfoList(); for (auto item : list) { add (item.fileName()); } close (); /* open ("Abc"); open ("Def"); open ("Klm"); add ("something"); close (); add ("another"); close (); close (); */ }