QtExamples/QtQFileSystemModelEx/ExQFileSystemModel.cpp
touwoyimuli deff6bad43 feat: QFileSystemModel
QFileSystemModel(文件系统的模型)的介绍和使用
2019-09-15 00:35:08 +08:00

69 lines
2.6 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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));
}