Qt QFileSystemModel详解

2023-05-16

1.QFileSystemModel简介

QFileSystemModel 提供了一个可用于访问本机文件系统的数据模型。

QFileSystemModel 和视图组件 QTreeView 结合使用,可以用目录树的形式显示本机上的文件系统,如同 Widnows 的资源管理器一样。使用 QFileSystemModel 提供的接口函数,可以创建目录、删除目录、重命名目录,可以获得文件名称、目录名称、文件大小等参数,还可以获得文件的详细信息。

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

QFileSystemModel *model = new QFileSystemModel;
model->setRootPath(QDir::currentPath());

静态函数 QDir::currentPath() 获取应用程序的当前路径。

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

2.常用API

//文件路径
QString filePath(const QModelIndex &index) const

//文件名
QString fileName(const QModelIndex &index) const

//文件类型
QString type(const QModelIndex &index) const

//文件大小
qint64 size(const QModelIndex &index) const



3.示例

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    //QFileSystemModel提供单独线程,推荐使用
    m_model=new QFileSystemModel(this);

    //设置根目录
    m_model->setRootPath(QDir::currentPath());

    ui->treeView->setModel(m_model); //设置数据模型
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_treeView_clicked(const QModelIndex &index)
{
    ui->lbPath->setText(m_model->filePath(index));
    ui->lbType->setText(m_model->type(index));
    ui->lbName->setText(m_model->fileName(index));
    int sz=m_model->size(index)/1024;
    if (sz<1024)
      ui->lbSize->setText(QString("%1 KB").arg(sz));
    else
      ui->lbSize->setText(QString::asprintf("%.1f MB",sz/1024.0));
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt QFileSystemModel详解 的相关文章

随机推荐