#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_model = new QFileSystemModel(this);
ui->tableView->setModel(m_model);
ui->listView->setModel(m_model);
ui->treeView->setModel(m_model);
m_model->setRootPath("");
connect(ui->treeView,&QTreeView::clicked,ui->tableView,&QTableView::setRootIndex);
connect(ui->treeView,&QTreeView::clicked,ui->listView,&QListView::setRootIndex);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_setAction_triggered()
{
QString dir = QFileDialog::getExistingDirectory(this,"获取路径",QDir::currentPath());
if(dir.isEmpty()){
return;
}
ui->treeView->setRootIndex(m_model->index(dir));
ui->tableView->setRootIndex(m_model->index(dir));
ui->listView->setRootIndex(m_model->index(dir));
}
void MainWindow::on_radioButtonShowFileAndFloder_clicked()
{
ui->groupBoxFileSelect->setEnabled(true);
m_model->setFilter(QDir::AllDirs|QDir::Files|QDir::NoDotAndDotDot);
}
void MainWindow::on_radioButtonShowFloder_clicked()
{
ui->groupBoxFileSelect->setEnabled(false);
m_model->setFilter(QDir::AllDirs|QDir::NoDotAndDotDot);
}
void MainWindow::on_checkBox_clicked(bool checked)
{
ui->comboBox->setEnabled(checked);
ui->pushButtonApplicat->setEnabled(checked);
m_model->setNameFilterDisables(!checked);
}
void MainWindow::on_pushButtonApplicat_clicked()
{
QStringList strList = ui->comboBox->currentText().trimmed().split(";",QString::SkipEmptyParts);
m_model->setNameFilters(strList);
}
void MainWindow::on_treeView_clicked(const QModelIndex &index)
{
ui->labelFileName->setText(m_model->fileName(index));
ui->labelFloderName->setText(m_model->filePath(index));
ui->labelNodeType->setText(m_model->type(index));
if(m_model->isDir(index)){
ui->checkBoxIsFloder->setCheckState(Qt::Checked);
}else {
ui->checkBoxIsFloder->setCheckState(Qt::Unchecked);
}
int fileSize = m_model->size(index);
if(fileSize > 1024)
ui->labelFileSize->setText(QString("%.1f MB").arg(fileSize /1024.0));
else {
ui->labelFileSize->setText(QString("%1 KB").arg(fileSize));
}
}