#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTreeWidget>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
void showDir (QTreeWidgetItem * target,
QString path,
int level);
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDir>
#include <QPushButton>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QDir d ("/usr/share/icons");
showDir(nullptr, d.absolutePath(), 5);
// ui->treeWidget->expandAll ();
ui->tabWidget->clear();
// ui->tabWidget->addTab(new QPushButton, "knoflik");
}
void MainWindow::showDir(QTreeWidgetItem *target,
QString path,
int level)
{
QDir dir (path);
QTreeWidgetItem * root = new QTreeWidgetItem;
root->setText (0, dir.dirName());
root->setToolTip (0, dir.absolutePath());
root->setForeground(0, QColor ("red"));
root->setIcon(0, QIcon::fromTheme("folder"));
if (target == nullptr)
ui->treeWidget->addTopLevelItem (root);
else
target->addChild (root);
for (QFileInfo info :
dir.entryInfoList (QDir::AllEntries | QDir::NoDotAndDotDot,
QDir::Name) )
{
if (info.isDir())
{
if (level > 1)
showDir (root, info.absoluteFilePath(), level-1);
}
else
{
QTreeWidgetItem * item = new QTreeWidgetItem;
item->setText (0, info.fileName());
item->setToolTip (0, info.absoluteFilePath());
item->setForeground(0, QColor ("blue"));
item->setIcon(0, QIcon::fromTheme("weather-clear"));
root->addChild (item);
}
}
}
#include <QTextEdit>
#include <QLabel>
void MainWindow::on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column)
{
QString path = item->toolTip(0);
QFileInfo info (path);
QWidget * widget = nullptr;
if (info.fileName().endsWith(".png"))
{
QLabel * label = new QLabel ();
widget = label;
QPixmap image (path);
label->setPixmap(image);
item->setIcon(0, image);
}
else
{
QTextEdit * edit = new QTextEdit;
widget = edit;
QFile f (path);
if (f.open (QFile::ReadOnly))
{
QByteArray a = f.readAll();
edit->setText(a);
f.close ();
}
}
int inx = ui->tabWidget->addTab(widget, item->text(0));
ui->tabWidget->setTabToolTip(inx, item->toolTip(0));
ui->tabWidget->setTabIcon (inx, item->icon(0));
}
MainWindow::~MainWindow()
{
delete ui;
}