模型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、举例

#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));//文件大小elseui->LabFileSize->setText(QString::asprintf("%.1f MB",sz/1024.0));
}

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

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

QFileSystemModel  d;

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

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

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

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

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

二、

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/411824.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

介绍 sCrypt:BTC 的 Layer-1 智能合约框架

在 TypeScript 中开发 BTC 智能合约 我们非常高兴地推出 sCrypt&#xff1a;一种现代 Typescript 框架&#xff0c;用于在 BTC 上开发第一层智能合约&#xff0c;无需分叉。 现在&#xff0c;人们可以使用现代开发工具在易于使用的统一框架中编写、测试、调试、部署和调用智能合…

使用Go语言处理Excel文件的完整指南

xcel文件是广泛用于存储和处理数据的常见文件格式。在Go语言中&#xff0c;有许多库和工具可用于处理Excel文件。本文将介绍如何使用Go语言处理Excel文件&#xff0c;包括读取、写入和修改Excel文件&#xff0c;以及处理单元格、行和列等操作。无论是从头开始创建Excel文件&…

RT-Thread 15. list_timer与软定时器

1. 代码 void rt_thread_usr1_entry(void *parameter) {/* set LED2 pin mode to output */rt_pin_mode(LED2_PIN, PIN_MODE_OUTPUT);while (1){rt_pin_write(LED2_PIN, PIN_HIGH);rt_thread_mdelay(2000);rt_pin_write(LED2_PIN, PIN_LOW);rt_thread_mdelay(3000);} }int ma…

如何在CentOS下使用Docker部署Halo博客网站并结合内网穿透远程访问

文章目录 ⛳️ 推荐1. Docker部署Halo1.1 检查Docker版本如果未安装Docker可参考已安装Docker步骤&#xff1a;1.2 在Docker中部署Halo 2. Linux安装Cpolar2.1 打开服务器防火墙2.2 安装cpolar内网穿透 3. 配置Halo个人博客公网地址4. 固定Halo公网地址 ⛳️ 推荐 前些天发现了…

通过OpenIddict设计一个授权服务器03-客户凭证流程

在本部分中&#xff0c;我们将把 OpenIddict 添加到项目中&#xff0c;并实施第一个授权流程&#xff1a;客户端凭证流。 添加 OpenIddict 软件包 首先&#xff0c;我们需要安装 OpenIddict NuGet 软件包 dotnet add package OpenIddict dotnet add package OpenIddict.AspN…

2024--Django平台开发-Redis集群(十一)

内容回顾 主从复制。 哨兵&#xff1a;实例启动了&#xff0c;哨兵节点没启动&#xff0c;Python通过redis-py连接报错。一定要确保实例节点和哨兵节点都启动了。 搭建集群用的是虚拟机的多台centos服务器&#xff0c;你在跟着学习的时候&#xff0c;一定要全部都是虚拟机&am…

【FastAPI】P1 简单实现 a+b

目录 准备工作代码运行 说明&#xff1a;本文通过 FastAPI 实现返回两个参数 ab 的值&#xff1b; 准备工作 默认读者已准备完善 Python IDE工具以及包管理工具。 首先&#xff0c;需要安装 fastapi 和 uvicorn 库&#xff0c;如果没有请使用 pip 进行安装&#xff1a; pip…

Spring框架的背景学习

Spring 的前世今生 相信经历过不使用框架开发 Web 项目的 70 后、80 后都会有如此感触&#xff0c;如今的程序员开发项目太轻松了&#xff0c;基本只需要关心业务如何实现&#xff0c;通用技术问题只需要集成框架便可。早在 2007 年&#xff0c;一个基于 Java语言的开源框架正…

SpringBoot参数校验@Validated、@Valid

SpringBoot参数校验Validated、Valid&#xff08;javax.validation&#xff09; 一、应用场景 在实际开发中&#xff0c;前端校验并不安全&#xff0c;任何人都可以通过接口来调用我们的服务&#xff0c;就算加了一层token的校验&#xff0c;有心人总会转空子&#xff0c;来传…

Django笔记(一):环境部署

目录 Python虚拟环境 安装virtualenv 创建环境 激活环境 关闭&#xff1a; 安装Django VSCode配置 Python插件 Django插件 解释器选择 Django部署 创建项目 创建app 创建模板 编写视图 编写路由 启动服务器 访问 Python虚拟环境 安装virtualenv pip i…

gateway Redisson接口级别限流解决方案

文章目录 前言1. 计数器算法&#xff08;固定窗口限流器&#xff09;2. 滑动窗口日志限流器3. 漏桶算法&#xff08;Leaky Bucket&#xff09;4. 令牌桶算法&#xff08;Token Bucket&#xff09;5. 限流队列应用场景实现工具 一、Redisson简介二、Redisson限流器的原理三、Red…

情人节专属--html5 canvas制作情人节告白爱心动画特效

💖效果展示 💖html展示 <!doctype html> <html> <head> <meta charset=