#include "dialog.h"
#include "ui_dialog.h"
#include <QDebug>
#include <QDialogButtonBox>
#include <QtWidgets>
#include <QMessageBox>
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
model = new QDirModel;
model->setReadOnly(false);//默认是只读的
model->setSorting(QDir::DirsFirst|QDir::IgnoreCase|QDir::Name);//排序文件夹的名称忽略大小写文件名
ui->setupUi(this);
ui->treeView->setModel(model);//给视图设置模型
ui->treeView->header()->setSortIndicator(0,Qt::AscendingOrder);//升序排序 有个小三角
ui->treeView->header()->setSortIndicatorShown(true);
QModelIndex index = model->index(QDir::currentPath());//当前路径在模型中的索引
ui->treeView->expand(index); //打开时讲文件夹展开展开
ui->treeView->scrollTo(index);
ui->treeView->resizeColumnToContents(0);
QPushButton *mkdirButton = ui->buttonBox->addButton(tr("&Create Diredtory.."),QDialogButtonBox::ActionRole);
QPushButton *quitButton = ui->buttonBox->addButton(tr("&Quit"),QDialogButtonBox::AcceptRole);
QPushButton *removeButon = ui->buttonBox->addButton(tr("&Rmove"),QDialogButtonBox::ActionRole);
connect(ui->buttonBox,SIGNAL(accepted()),this,SLOT(accept()));
connect(mkdirButton,SIGNAL(clicked()),this,SLOT(createDirectory()));
connect(removeButon,SIGNAL(clicked()),this,SLOT(remove()));
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::createDirectory()
{
// qDebug()<<"Hello";
QModelIndex index = ui->treeView->currentIndex();
if(!index.isValid())
return;
//输入文件夹的名称
QString dirName = QInputDialog::getText(this,tr("Create Directory"),tr("Directory Name"));
if(!dirName.isEmpty())
{
if( !model->mkdir(index,dirName).isValid())
{
QMessageBox::information(this,tr("Create Directory"),tr("Faile to create dir"));
}
}
}
void Dialog::remove()
{
//qDebug()<<"Qt";
QModelIndex index = ui->treeView->currentIndex();
if(!index.isValid())
return;
bool ok;
if(model->fileInfo(index).isDir())
{
ok = model->rmdir(index);
}
else
{ //删除文件
ok = model->remove(index);
}
if(!ok)
{
QMessageBox::information(this,tr("Remove"),tr("Filed remove %1").arg(model->fileName(index)));
}
}
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QDirModel>
#include <QInputDialog>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
private:
Ui::Dialog *ui;
QDirModel *model;
private slots:
void createDirectory();
void remove();
};
#endif // DIALOG_H