#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);
// ui->treeView->setRootIndex(m_model->index(QDir::currentPath()));
m_model->setRootPath("");
connect(ui->treeView,&QTreeView::clicked,ui->tableView,&QTableView::setRootIndex);//QTreeView按下后,根项目显示在QTableView中
connect(ui->treeView,&QTreeView::clicked,ui->listView,&QListView::setRootIndex);
}
MainWindow::~MainWindow()
{
delete ui;
}
//在TableView和ListView中显示文件、目录,在TreeView中显示文件列表
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);
// QStringList list = ui->comboBox->currentText().split(";");
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));
}
}
07-22
3798
10-26
1837
03-20
2936