[[tree2019]]
 
#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;
}
 
tree2019.txt · Last modified: 2019/10/22 17:09 by 147.32.6.116
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki