模型Model:文件系统模型QFileSystemModel

这篇具有很好参考价值的文章主要介绍了模型Model:文件系统模型QFileSystemModel。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、

1、常用函数

QFileSystemModel自带目录变化监听
1)、 QModelIndex setRootPath(const QString &path); 设置检索根目录
2)、 bool isDir(const QModelIndex &index) const; 选中索引是否为目录节点
3)、 QString filePath(const QModelIndex &index) const; 选中索引路径
4)、 QString type(const QModelIndex &index) const; 选中索引文件类型
5)、 inline QString fileName(const QModelIndex &index) const; 选中索引文件名称
6)、 qint64 size(const QModelIndex &index) const; 选中索引文件大小

7)、 QModelIndex mkdir(const QModelIndex &parent, const QString &name)
在父模型索引 parent 中创建一个名称为 name 的目录。
8)、 bool rmdir(const QModelIndex &index)
移除并删除文件系统模型中索引 index 所对应的目录。若删除成功则返回 true,否则
返回 false。注意:该函数并不会把目录放置于可以恢复的位置(比如回收站),而是直
接删除。
9)、 bool remove(const QModelIndex &index)
从文件系统模型中移除模型索引 index,并删除对应的文件,若删除成功,则返回 true,
否则返回 false。注意:该函数并不会把文件放置于可以恢复的位置(比如回收站),而
是直接删除。
 

10)、QModelIndex index(const QString &path, int column = 0) const
返回给定路径 path 和列 column 的项目的模型索引
11)、 void setFilter(QDir::Filters filters)
QDir::Filters filter() const
以上函数表示设置和返回目录模型的过滤器, 设置的过滤器应始终包含 QDir::AllDirs,
否则 QFileSystemModel 将无法读取目录结构。 若未设置过滤器,则默认过滤器是
QDir::AllEntries|QDir::NoDotAndDotDot | QDir::AllDirs,即列出目录、文件、驱动器、
符号连接,且不列出特殊条目“…”, QDir::Filter 枚举参见 QDir 类。
12)、 void setNameFilters(const QStringList &filters)
QStringList nameFilters() const
以上函数用于设置和返回模型的名称过滤器列表。 此处的名称过滤器的设置方法与第
6 章文件对话框章节的有些不同,规则如下
过滤器使用字符串列表的形式指定,一次只能指定一种类型,且不支持 MIME 类型,

2、举例

模型Model:文件系统模型QFileSystemModel,# 模型\视图\委托(自定义代理),qt,开发语言

#include "mainwindow.h"
#include "ui_mainwindow.h"


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

    model=new QFileSystemModel(this); //QFileSystemModel提供单独线程,推荐使用
    model->setRootPath(QDir::currentPath()); //设置根目录

    ui->treeView->setModel(model); //设置树视图 数据模型
    ui->listView->setModel(model); //设置列表视图 数据模型
    ui->tableView->setModel(model); //设置表格视图 数据模型

//信号与槽关联,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)));
}

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

void MainWindow::on_treeView_clicked(const QModelIndex &index)
{
    ui->chkIsDir->setChecked(model->isDir(index));//节点是目录
    ui->LabPath->setText(model->filePath(index));//节点路径
    ui->LabType->setText(model->type(index));//节点类型

    ui->LabFileName->setText(model->fileName(index));//文件名

    int sz=model->size(index)/1024;//文件大小
    if (sz<1024)
        ui->LabFileSize->setText(QString("%1 KB").arg(sz));//文件大小
    else
        ui->LabFileSize->setText(QString::asprintf("%.1f MB",sz/1024.0));
}

2.1、模型索引ModelIndex 和 文件路径path的联系??

可以通过QFileSystemModel::index()函数,获取“给定路径path的文件系统模型的 模型索引!!

模型Model:文件系统模型QFileSystemModel,# 模型\视图\委托(自定义代理),qt,开发语言

QFileSystemModel  d;

QModelIndex m = d->index(“path”);//给定路径path”的模型索引m

2.2、treeView的当前目录,是如何传递给setRootIndex函数的?

模型Model:文件系统模型QFileSystemModel,# 模型\视图\委托(自定义代理),qt,开发语言

模型Model:文件系统模型QFileSystemModel,# 模型\视图\委托(自定义代理),qt,开发语言

Clicked(QModelIndex)信号,会传递一个QModelIndex变量,是当前节点的 模型索引。

比如,这个QModelIndex变量d创建时候是d->index(“path”)这个根目录。那么就会将这个模型索引d,传递给listView和tableView的槽函数setRootIndex(d)。

listView和tableView就会显示此节点下的目录和文件。

二、文章来源地址https://www.toymoban.com/news/detail-799180.html

到了这里,关于模型Model:文件系统模型QFileSystemModel的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包