QT_GUI_IM_6_5 - 8BitsCoding/RobotMentor GitHub Wiki


목차


widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QFileSystemModel>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_addDirButton_clicked();

    void on_removeFileDir_clicked();

private:
    Ui::Widget *ui;
    QFileSystemModel * model;
};

#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QInputDialog>
#include <QMessageBox>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    model = new QFileSystemModel(this);
    model->setReadOnly(false);

    /*
         * Sets the directory that is being watched by the model to newPath
         *  by installing a file system watcher on it. Any changes to files
         *  and directories within this directory will be reflected in the model.
         * */
    model->setRootPath(QDir::currentPath());

    ui->treeView->setModel(model);
    ui->treeView->setAlternatingRowColors(true);


    QModelIndex index = model->index(QDir::currentPath());

    ui->treeView->expand(index);
    ui->treeView->scrollTo(index);
    ui->treeView->resizeColumnToContents(0);


}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_addDirButton_clicked()
{

    QModelIndex index = ui->treeView->currentIndex();
    if (!index.isValid())
        return;

    QString dirName = QInputDialog::getText(this,
                                "Create Directory",
                                  "Directory name");

    if(!dirName.isEmpty()){

        if(!model->mkdir(index,dirName).isValid()){
            QMessageBox::information(this, "Create Directory",
                                "Failed to create the directory");
        }
    }
}

void Widget::on_removeFileDir_clicked()
{
    QModelIndex index = ui->treeView->currentIndex();
    if (!index.isValid())
        return;

    bool ok;
    //Check if it's a dir or file that you are deleting
    if (model->fileInfo(index).isDir()) {
        ok = model->rmdir(index);
    } else {
        ok = model->remove(index);
    }

    if (!ok)
           QMessageBox::information(this, "Delete",
                   QString("Failed to delete %1").arg(model->fileName(index)));
}
⚠️ **GitHub.com Fallback** ⚠️