模型Model:文件系统模型QFileSystemModel

news2024/11/28 22:51:38

一、

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));//文件大小
    else
        ui->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.coloradmin.cn/o/1392517.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LabVIEW图像识别检测机械零件故障

项目背景&#xff1a; 在工业生产中&#xff0c;零件尺寸的准确检测对保证产品质量至关重要。传统的人工测量方法不仅耗时费力&#xff0c;精度低&#xff0c;还容易导致零件的接触磨损。为了解决这些问题&#xff0c;开发了一套基于LabVIEW和机器视觉的机械零件检测系统。该系…

新火种AI|程前怼大佬引发闹剧,但更值得关注的,是大佬的AI观点

作者&#xff1a;小岩 编辑&#xff1a;彩云 在2024年开年的一场演讲大会中&#xff0c;知名网红程前直接炮轰了大佬周鸿祎。事件快速发酵&#xff0c;引起了全网的热烈讨论。很多人都在吐槽程前的情商有多低&#xff0c;大佬有多真性情&#xff0c;却全然忘记了周鸿祎此次参…

unity C#什么是线程锁,以及使用案例

文章目录 原理1. **互斥**&#xff08;Mutual Exclusion&#xff09;:2. **缓存一致性与内存屏障**&#xff1a;3. **操作系统的支持**&#xff1a;4. **编程语言级别的实现**&#xff1a;5. **避免死锁**&#xff1a;图示 实例1实例2 原理 线程锁的原理主要是为了在多线程环境…

美国智库发布《用人工智能展望网络未来》的解析

文章目录 前言一、人工智能未来可能改善网络安全的方式二、人工智能可能损害网络安全的方式三、人工智能使用的七条建议四、人工智能的应用和有效使用AI五、安全有效地使用人工智能制定具体建议六、展望网络未来的人工智能&#xff08;一&#xff09;提高防御者的效率&#xff…

如何优雅的实现主机与虚拟机文件共享?

我们在嵌入式开发中使用虚拟机时&#xff0c;经常需要在主机和虚拟机操作系统之间传输文件。以常用的虚拟机软件 Vmware 为例&#xff0c;如果安装了虚拟机工具&#xff0c;我们可以通过直接拖放文件的方式快速实现文件的交互&#xff0c;但这种方式做不到文件的同步、修改&…

华为路由设备DHCPV6配置

组网需求 如果大量的企业用户IPv6地址都是手动配置&#xff0c;那么网络管理员工作量大&#xff0c;而且可管理性很差。管理员希望实现公司用户IPv6地址和网络配置参数的自动获取&#xff0c;便于统一管理&#xff0c;实现IPv6的层次布局。 图1 DHCPv6服务器组网图 配置思路 …

Android 系统启动过程纪要(基于Android 10)

前言 看过源码的都知道&#xff0c;Launcher系统启动都会经过这三个进程 init ->zygote -> system_server。今天我们就来讲解一下这三个进程以及Launcher系统启动。 init进程 准备Android虚拟机环境&#xff1a;创建和挂载系统文件目录&#xff1b;初始化属性服务&…

Halcon基于灰度值的模板匹配

Halcon基于灰度值的模板匹配 基于灰度值的模板匹配是最经典的模板匹配算法&#xff0c;也是最早提出来的模板匹配算法。这种算法的根本思想是&#xff0c;计算模板图像与检测图像之间的像素灰度差值的绝对值总和&#xff08;SAD方法&#xff09;或者平方差总和&#xff08;SSD…

Java NIO (一)简介

1 NIO简介 在1.4版本之前&#xff0c;Java NIO类库是阻塞IO&#xff0c;从1.4版本开始&#xff0c;引进了新的异步IO库&#xff0c;被称为Java New IO类库&#xff0c;简称为Java NIO。New IO类库的目的 就是要让Java支持非阻塞IO。 Java NIO类库包含三个核心组件&#xff1a; …

Vue3中provide,inject使用

一&#xff0c;provide,inject使用&#xff1a; 应用场景&#xff1a;向孙组件传数据 应用Vue3碎片&#xff1a; ref&#xff0c;reactive&#xff0c;isRef&#xff0c;provide, inject 1.provide,inject使用 a.爷组件引入 import {ref,provide} from vue const drinkListre…

LeetCode、2542. 最大子序列的分数【中等,排序+小顶堆】

文章目录 前言LeetCode、2542. 最大子序列的分数【中等&#xff0c;排序小顶堆】题目及类型思路及代码实现 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质作者、专注于Java后端技术领…

安泰射频功率放大器的主要的类型及主要参数

射频功率放大器是一种将射频信号放大到更高功率级别的电子设备。根据其工作原理和应用要求&#xff0c;射频功率放大器可以分为不同的类型。下面西安安泰将介绍一些常见的射频功率放大器类型和相关的主要参数。 A类功率放大器&#xff1a;A类功率放大器是一种广泛使用的线性放大…

Navicat教程

下载连接&#xff08;无限使用版&#xff09; 链接&#xff1a;https://pan.baidu.com/s/1IprYLRv0bSnW-XKn0trRtw 提取码&#xff1a;j6qx 连接使用 1.1 连接数据库 打开navicat&#xff0c;点击连接&#xff0c;选择数据库 1.2 操作数据库 右键连接&#xff0c;点击新建数…

Excel 动态可视化图表分享

AIGC ChatGPT 职场案例 AI 绘画 与 短视频制作 PowerBI 商业智能 68集 数据库Mysql 8.0 54集 数据库Oracle 21C 142集 Office 2021实战应用 Python 数据分析实战&#xff0c; ETL Informatica 数据仓库案例实战 Excel 2021实操 100集&#xff0c; Excel 2021函数大全 80集 Exc…

【C++】入门C++前想要了解的小知识

个人主页 &#xff1a; zxctsclrjjjcph 文章封面来自&#xff1a;艺术家–贤海林 如有转载请先通知 目录 1. 前言2. 什么是C3. C的发展史4. C的重要性4.1 语言的使用广泛度4.2 在工作领域中4.3 在校招领域中 5. 如何学习C5.1 看看别人怎么学习的5.2 自己怎么学 1. 前言 今天开…

【FastAPI】请求体

在 FastAPI 中&#xff0c;请求体&#xff08;Request Body&#xff09;是通过请求发送的数据&#xff0c;通常用于传递客户端提交的信息。FastAPI 使得处理请求体变得非常容易。 请求体是客户端发送给 API 的数据。响应体是 API 发送给客户端的数据 注&#xff1a;不能使用 …

docker容器和常用命令

1.什么是容器 容器是隔离的环境中运行的一个 进程 , 如果进程结束 , 容器就会停止. 细致: 容器的隔离环境 , 拥有自己的 ip 地址 , 系统文件 , 主机名 , 进程管理 , 相当于一个 mini的系统 2.容器 vs 虚拟机 3.Docker极速上手指南 #1.安装相关依赖. sudo yum install -y …

链表的中间节点

链表的中间节点 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能&#xff0c;轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/middle-of-the-…

python之AI视频去码图片修复CodeFormer,把你的老照片变漂亮

CodeFormer介绍 CodeFormer是由南洋理工大学-商汤科技联合研究中心S-Lab在NeurIPS 2022上提出的一种基于VQGANTransformer的人脸复原模型。该方法基于预训练VQGAN离散码本空间&#xff0c;改变复原任务的固有范式&#xff0c;将人脸复原任务转成Code序列的预测任务&#xff0c…

DOM 的 diff 算法

经典面试题&#xff1a; 1&#xff09;react/vue中的 key 有什么作用&#xff1f;&#xff08;key的内部原理是什么&#xff1f;&#xff09; 2&#xff09;为什么遍历列表时&#xff0c;key 最好不用 index&#xff1f; 1、虚拟dom中key的作用&#xff1a; 1&#xff09; 简…