69 lines
2.6 KiB
C++
69 lines
2.6 KiB
C++
|
#include "ExQFileSystemModel.h"
|
|||
|
#include "ui_ExQFileSystemModel.h"
|
|||
|
|
|||
|
ExQFileSystemModel::ExQFileSystemModel(QWidget *parent) :
|
|||
|
QMainWindow(parent),
|
|||
|
ui(new Ui::ExQFileSystemModel)
|
|||
|
{
|
|||
|
ui->setupUi(this);
|
|||
|
setWindowTitle(QObject::tr("文件系统模型QFileSystemModel的介绍和使用"));
|
|||
|
|
|||
|
init();
|
|||
|
connect(ui->treeView, &QTreeView::clicked, ui->listView, &QListView::setRootIndex);
|
|||
|
connect(ui->treeView, &QTreeView::clicked, ui->tableView, &QTableView::setRootIndex);
|
|||
|
}
|
|||
|
|
|||
|
ExQFileSystemModel::~ExQFileSystemModel()
|
|||
|
{
|
|||
|
delete ui;
|
|||
|
}
|
|||
|
|
|||
|
//初始化,以及初始化状态栏
|
|||
|
void ExQFileSystemModel::init()
|
|||
|
{
|
|||
|
//设置数据模型,且加载到各个视图上面
|
|||
|
m_model = new QFileSystemModel(this);
|
|||
|
QString currPath = QDir::currentPath(); //获取当前路径
|
|||
|
m_model->setRootPath(currPath); //设置根目录
|
|||
|
ui->treeView->setModel(m_model); //设置数据模型
|
|||
|
ui->listView->setModel(m_model);
|
|||
|
ui->tableView->setModel(m_model);
|
|||
|
ui->columnView->setModel(m_model);
|
|||
|
|
|||
|
//初始化状态栏
|
|||
|
m_labFileName = new QLabel("名称:", ui->statusBar);
|
|||
|
m_labFileName->setMinimumWidth(180);
|
|||
|
m_labFileSize = new QLabel("大小:", ui->statusBar);
|
|||
|
m_labFileSize->setFixedWidth(130);
|
|||
|
m_labFileType = new QLabel("类型:", ui->statusBar);
|
|||
|
m_labFileType->setFixedWidth(130);
|
|||
|
m_labPath = new QLabel("路径:" + currPath, ui->statusBar);
|
|||
|
m_chkBoxIsFile = new QCheckBox("当前为文件夹", ui->statusBar);
|
|||
|
m_chkBoxIsFile->setFixedWidth(130);
|
|||
|
|
|||
|
//各种QLable添加到状态栏
|
|||
|
ui->statusBar->addWidget(m_labFileName);
|
|||
|
ui->statusBar->addWidget(m_labFileSize);
|
|||
|
ui->statusBar->addWidget(m_labFileType);
|
|||
|
ui->statusBar->addWidget(m_chkBoxIsFile);
|
|||
|
ui->statusBar->addWidget(m_labPath);
|
|||
|
}
|
|||
|
|
|||
|
//单击treeView,会在状态栏显示当前节点的信息
|
|||
|
void ExQFileSystemModel::on_treeView_clicked(const QModelIndex &index)
|
|||
|
{
|
|||
|
m_chkBoxIsFile->setChecked(m_model->isDir(index)); //是否是目录
|
|||
|
m_labFileName->setText("名称:" + m_model->fileName(index)); //文件名称
|
|||
|
double size = m_model->size(index) / 1024.0;
|
|||
|
|
|||
|
if (size < 1024)
|
|||
|
m_labFileSize->setText("类型:" + QString::number(size, 'f', 2) + "KB");
|
|||
|
else if (1024 <= size && size < 1024 * 1024)
|
|||
|
m_labFileSize->setText("类型:" + QString::number(size / 1024, 'f', 2) + "MB");
|
|||
|
else
|
|||
|
m_labFileSize->setText("类型:" + QString::number(size / (1024 * 1024), 'f', 2) + "GB");
|
|||
|
|
|||
|
m_labFileType->setText(m_model->type(index));
|
|||
|
m_labPath->setText(m_model->filePath(index));
|
|||
|
}
|