使用了treeview、tableview、listview。
在treeview触发点击信号后,TableView和ListView会显示当前节点下的目录,下方标签也会显示信息
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
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 <QMainWindow>
#include <QFileSystemModel>
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