Model/View——(二)QFileSystemModel

QFileSystemModel

QFileSystemModel类的基本功能

QFileSystemModel提供了一个可用于访问本机文件系统的数据模型。QFileSystemModel和视图QTreeView结合使用,可以用目录树的形式显示本机上的文件系统,如同Windows的资源管理器一样。

使用QFileSystemModel提供的接口函数,可以创建目录、删除目录、重命名目录,可以获得文件名称、目录名称、文件大小等参数,还可以获得文件的详细信息。

要通过QFileSystemModel获得本机的文件系统,需要用setRootPath()函数为QFileSystemModel设置一个根目录

QFileSystemModel *model = new QFileSystemModel;
model->setRootPath(QDir::currentPath());//静态函数QDir::currentPath()获取应用程序的当前路径

其他:用于获取磁盘文件目录的数据模型还有一个QDirModel,QDirModel的功能与QFileSystemModel类似,以可以获取目录和文件,但是QFileSystemModel采用单独的线程获取目录文件结构,不会阻碍主线程,而QDirModel不使用单独的线程。

QFileSystemModel的使用与实例

在这里插入图片描述

UI布局

在这里插入图片描述
在这里插入图片描述

代码部分

//mainwindow.h
private:
    QFileSystemModel *model;
//mainwindow.cpp
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    model = new QFileSystemModel(this);
    model->setRootPath(QDir::currentPath()); //设置根目录
    ui->treeView->setModel(model);//设置数据模型
    ui->listView->setModel(model);
    ui->tableView->setModel(model);
    ui->tableView->verticalHeader()->setVisible(false);
    //信号与槽关联,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)));
}
void MainWindow::on_treeView_clicked(const QModelIndex &index)
{
    ui->chk_isDir->setChecked(model->isDir(index));
    ui->lab_FilePath->setText(model->filePath(index));
    ui->lab_FileName->setText(model->fileName(index));
    ui->lab_FileType->setText(model->type(index));
    int sz = model->size(index)/1024;
    if(sz < 1024)
        ui->lab_FileSize->setText(QString("%1 kB").arg(sz));
    else
        ui->lab_FileSize->setText(QString::asprintf("%.lf MB",sz/1024.0));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值