项目展示
项目链接
https://download.csdn.net/download/weixin_45525272/16673905
项目结构
mainwin-UI
mainwin.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QFileSystemModel> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT private: QFileSystemModel *model; //定义数据模型变量 public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void on_treeView_clicked(const QModelIndex &index); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H
mainwin.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); model=new QFileSystemModel(this); //QFileSystemModel提供单独线程,推荐使用 model->setRootPath(QDir::currentPath()); //设置根目录 ui->treeView->setModel(model); //设置数据模型 ui->listView->setModel(model); //设置数据模型 ui->tableView->setModel(model); //设置数据模型 //信号与槽关联,treeView单击时,其目录设置为listView和tableView的根节点 connect(ui->treeView,SIGNAL(clicked(QModelIndex)), ui->listView,SLOT(setRootIndex(QModelIndex))); connect(ui->treeView,SIGNAL(clicked(QModelIndex)), ui->tableView,SLOT(setRootIndex(QModelIndex))); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_treeView_clicked(const QModelIndex &index) { ui->chkIsDir->setChecked(model->isDir(index)); ui->LabPath->setText(model->filePath(index)); ui->LabType->setText(model->type(index)); ui->LabFileName->setText(model->fileName(index)); int sz=model->size(index)/1024; if (sz<1024) ui->LabFileSize->setText(QString("%1 KB").arg(sz)); else ui->LabFileSize->setText(QString::asprintf("%.1f MB",sz/1024.0)); }