Qt5.9 C++开发指南 5.2文件系统

使用了treeview、tableview、listview。
Qt5.9 C++开发指南 5.2文件系统_第1张图片
在treeview触发点击信号后,TableView和ListView会显示当前节点下的目录,下方标签也会显示信息

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include 
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    model = new QFileSystemModel;
    model->setRootPath(QDir::currentPath());//
    ui->treeView->setModel(model);
    ui->listView->setModel(model);
    ui->tableView->setModel(model);

    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->checkBox->setChecked(model->isDir(index));
    ui->labelFilePath->setText(model->filePath(index));
    ui->labelFileWhat->setText(model->type(index));
    ui->labelFileName->setText(model->fileName(index));
    int sizeFile = model->size(index)/1024;
    if(sizeFile<1024)
    {
        ui->labelFileSize->setText(QString("%1 KB").arg(sizeFile));
    }
    else
    {
        ui->labelFileSize->setText(QString::asprintf("%1.f MB",sizeFile/1024.0));
    }
}

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include 
#include 
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_treeView_clicked(const QModelIndex &index);

private:
    Ui::MainWindow *ui;
    QFileSystemModel *model;
};
#endif // MAINWINDOW_H

你可能感兴趣的:(QT)