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(使用前将#替换为@)