1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| #include <QtGui> #include "directoryviewer.h" #include "ui_directoryviewer.h"
DirectoryViewer::DirectoryViewer(QWidget *parent) : QDialog(parent), ui(new Ui::DirectoryViewer) { ui->setupUi(this); model = new QDirModel; model->setReadOnly(false); model->setSorting(QDir::DirsFirst | QDir::IgnoreCase | QDir::Name); treeView = new QTreeView; treeView->setModel(model); treeView->header()->setStretchLastSection(true); treeView->header()->setSortIndicator(0,Qt::AscendingOrder); treeView->header()->setSortIndicatorShown(true); treeView->header()->setClickable(true); QModelIndex index = model->index(QDir::currentPath()); treeView->expand(index); treeView->scrollTo(index); treeView->resizeColumnToContents(0); buttonBox = new QDialogButtonBox(Qt::Horizontal); QPushButton *mkdirButton = buttonBox->addButton(tr("&Create Directory"),QDialogButtonBox::ActionRole); QPushButton *removeButton = buttonBox->addButton(tr("&Remove"),QDialogButtonBox::ActionRole); buttonBox->addButton(tr("&Quit"),QDialogButtonBox::AcceptRole);
connect(mkdirButton,SIGNAL(clicked()),this,SLOT(createDirectory())); connect(removeButton,SIGNAL(clicked()),this,SLOT(remove())); connect(buttonBox,SIGNAL(accepted()),this,SLOT(accept()));
QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(treeView); layout->addWidget(buttonBox); setLayout(layout); setWindowTitle(tr("Directory Viewer by Killua")); }
DirectoryViewer::~DirectoryViewer() { delete ui; }
void DirectoryViewer::createDirectory() { QModelIndex index = 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("Failed to create")); } }
void DirectoryViewer::remove() { QModelIndex index =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("Failed to remvoe")); }
|