QT6(QFileSystemModel和QTreeView)

QT6


QFileSystemModel和QTreeView

  • QFileSystemModel为本机的文件系统提供一个模型,QFileSystemModelt和QTreeView结合使用,可以用目录树的形式显示本机的文件系统,如同Windows的资源管理器一样
  • 使用QFileSystemModel提供的接口函数,我们可以创建目录、删除目录、重命名目录、可以获得文件名称、目录名称、文件大小等参数,还可以获得文件的详情情况

QTreeView常用属性和方法

模型相关

属性/方法类型描述
model()QAbstractItemModel*获取视图使用的数据模型
setModel()void设置视图的数据模型
selectionModel()QItemSelectionModel*获取选择模型
setSelectionModel()void设置选择模型

外观与布局

属性/方法类型描述
indentation()int获取缩进宽度
setIndentation()void设置缩进宽度
uniformRowHeights()bool获取是否使用统一行高
setUniformRowHeights()void设置是否使用统一行高
columnWidth()int获取指定列的宽度
setColumnWidth()void设置指定列的宽度
header()QHeaderView*获取表头视图
setHeader()void设置表头视图
wordWrap()bool获取是否自动换行
setWordWrap()void设置是否自动换行

展开/折叠操作

属性/方法类型描述
expandsOnDoubleClick()bool获取是否双击展开项
setExpandsOnDoubleClick()bool设置是否双击展开项
itemsExpandable()bool获取项是否可展开
setItemsExpandable()void设置项是否可展开
rootIsDecorated()bool获取根项是否显示装饰
setRootIsDecorated()void设置根项是否显示装饰
expand()void展开指定索引的项
collapse()void折叠指定索引的项
expandAll()void展开所有项
collapseAll()void折叠所有项
expandRecursively()void递归展开项
isExpanded()bool检查指定索引的项是否展开

选择操作

属性/方法类型描述
setSelectionMode()void设置选择模式
selectionMode()QAbstractItemView::SelectionMode获取选择模式
setSelectionBehavior()void设置选择行为
selectionBehavior()QAbstractItemView::SelectionBehavior获取选择行为
currentIndex()QModelIndex获取当前选中项的索引
setCurrentIndex()void设置当前选中项
selectedIndexes()QModelIndexList获取所有选中项的索引列表
clearSelection()void清除所有选择
selectAll()void选择所有项

编辑功能

属性/方法类型描述
edit()void编辑指定索引的项
setEditTriggers()void设置编辑触发器
editTriggers()EditTriggers获取编辑触发器

排序功能

属性/方法类型描述
sortByColumn()void按指定列排序
setSortingEnabled()void启用或禁用排序
isSortingEnabled()bool检查是否启用排序

视图操作

属性/方法类型描述
indexAt()QModelIndex获取指定位置的模型索引
visualRect()QRect获取指定索引的可视矩形区域
scrollTo()void滚动到指定索引
resizeColumnToContents()void调整列宽以适应内容

动画效果

属性/方法类型描述
animated()bool获取是否启用动画效果
setAnimated()void设置是否启用动画效果

焦点显示

属性/方法类型描述
allColumnsShowFocus()bool获取所有列是否显示焦点
setAllColumnsShowFocus()void设置所有列是否显示焦点

代码测试

#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <QFileSystemModel>
#include <QFileDialog>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 创建model对象m_model = new QFileSystemModel(this);// 设置model对象ui->tableView->setModel(m_model);ui->tableView->setShowGrid(false);ui->treeView ->setModel(m_model);ui->listView->setModel(m_model);// 初始化m_model->setRootPath(QDir::currentPath());// 设置初始化目录ui->treeView->setRootIndex(m_model->index(QDir::currentPath()));connect(ui->treeView,&QTreeView::clicked,ui->listView,&QListView::setRootIndex);connect(ui->treeView,&QTreeView::clicked,ui->tableView,&QTableView::setRootIndex);}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_actionSetRoot_triggered()
{// 设置根目录QString dirStr = QFileDialog::getExistingDirectory(this,"选择目录",QDir::currentPath());if(dirStr.isEmpty()) return;ui->treeView->setRootIndex(m_model->index(dirStr));ui->listView->setRootIndex(m_model->index(dirStr));ui->tableView->setRootIndex(m_model->index(dirStr));}void MainWindow::on_radioButtonShowRootAndFile_clicked()
{m_model->setFilter(QDir::AllDirs|QDir::Files|QDir::NoDotAndDotDot);ui->groupBox_4->setEnabled(true);
}void MainWindow::on_radioButtonOnlyFile_clicked()
{m_model->setFilter(QDir::AllDirs|QDir::NoDotAndDotDot);ui->groupBox_4->setEnabled(false);
}void MainWindow::on_checkBoxFileFilter_clicked(bool checked)
{ui->comboBox->setEnabled(checked);ui->pushButton->setEnabled(checked);m_model->setNameFilterDisables(!checked);}void MainWindow::on_pushButton_clicked()
{QStringList filter = ui->comboBox->currentText().trimmed().split(",",Qt::SkipEmptyParts);m_model->setNameFilters(filter);}void MainWindow::on_treeView_clicked(const QModelIndex &index)
{ui->labelFileName->setText(QString("文件名称:%1").arg(m_model->fileName(index)));ui->labelFileSize->setText(QString("文件大小:%1 %2").arg(m_model->size(index)/1024).arg("KB"));ui->labelPathName->setText(QString("文件路径:%1").arg(m_model->filePath(index)));ui->labelNoedType->setText(QString("节点类型:%1").arg(m_model->type(index)));ui->checkBoxIsCatalog->setChecked(m_model->isDir(index));}

效果展示

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

【开题答辩全过程】以 基于Spring Boot的房屋租赁系统的设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

构建下一代智能金融基础设施

1. 行业背景&#xff1a;从数字支付到可编程金融的范式跃迁全球数字支付市场正以万亿美元的规模持续扩张&#xff0c;但其底层系统仍受限于传统金融的清算、结算延迟和高昂的中间成本。尽管互联网技术提升了支付的便捷性&#xff0c;但其核心仍是中心化账户体系的延伸。Web3 技…

【C++】深入解析C++嵌套依赖类型与typename关键字

什么是嵌套依赖类型&#xff1f;嵌套依赖类型&#xff08;Nested Dependent Type&#xff09;是指在一个模板中&#xff0c;一个类型名称依赖于模板参数&#xff0c;并且是该模板参数内部的嵌套类型。具体来说&#xff0c;当一个类型满足以下两个条件时&#xff0c;它就是嵌套依…

管网信息化监测主要的内容

管网信息化监测是指通过现代信息技术手段对管网系统进行实时监控和数据采集的管理方式。其背景源于城市化进程加快以及基础设施建设规模不断扩大&#xff0c;传统的管网管理模式已无法满足现代化需求。管网信息化监测主要内容包括以下几个方面&#xff1a;█管网运行状态监测&a…

数据泄露代价千万,PII 保护你真的做对了吗?

一、PII—数据隐私的核心概念解析 在大多数数据隐私法律中,可识别个人信息(PII, Personally Identifiable Information)是指任何可以用来识别个人身份的信息。然而,PII 的定义并非由单一法律统一规定,不同国家和地区的法律对其定义略有差异: 各国对 PII 的定义 美国 20…

【数据结构】八大排序之快速排序:分而治之的艺术

文章目录快速排序1.hoare版本算法优化三数取中法小区间优化完整代码如下算法分析时间复杂度空间复杂度2.前后指针法排序过程3.非递归&#xff08;栈模拟&#xff09;实现思路总结快速排序 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&#xff0c;其基本思想为…

在ROS中获取并发布UBS式传感器的温湿度

哈喽大家好&#xff0c;我是钢板兽&#xff01; 今天更新一篇和ROS相关的文章&#xff0c;有个项目需求是在ROS中获取并发布UBS式传感器的温湿度&#xff0c;我使用的温湿度传感器简介如下&#xff1a;DL11- MC-S1 温湿度传感器通过USB 接口采用标准MODBUS RTU 协议通信&#x…

【图论】 Graph.jl 操作汇总

文章目录图论的集合类操作Base.getindexBase.intersectBase.joinBase.reverseBase.reverse!Base.sizeBase.sumBase.sumBase.union图生成与转换Graphs.cartesian_productGraphs.complementGraphs.compute_shiftsGraphs.crosspathGraphs.differenceGraphs.egonetGraphs.induced_s…

【链表 - LeetCode】146. LRU 缓存

146. LRU 缓存 题解&#xff1a; class LRUCache {list<pair<int,int>>v;unordered_map<int,list<pair<int,int>>::iterator>idx;int capacity; public:LRUCache(int capacity):capacity(capacity){}int get(int key) {if(idx.count(key) 0) …

Elasticsearch vs Solr vs OpenSearch:搜索引擎方案对比与索引设计最佳实践

Elasticsearch vs Solr vs OpenSearch&#xff1a;搜索引擎方案对比与索引设计最佳实践 随着大数据和实时分析需求的爆发&#xff0c;搜索引擎已成为许多业务系统中的核心组件。本篇文章将从“技术方案对比分析型”角度切入&#xff0c;重点比较三大主流搜索引擎&#xff1a;El…

光颉科技)Viking)的CS25FTFR009 1225 0.009R/9mR 3W电阻介绍-华年商城

“**华年商城”**小编为您介绍&#xff1a;光颉科技&#xff08;Viking&#xff09;的CS25FTFR009 1225 0.009R/9mR 3W电阻 光颉CS25FTFR009合金电阻&#xff1a;0.009Ω/9mΩ 3W 1%精密采样电阻 光颉科技&#xff08;Viking&#xff09;的CS25FTFR009是一款高性能的电流检测电…

港科大开放世界长时域具身导航!LOVON:足式机器人开放词汇目标导航

作者&#xff1a;Daojie Peng1^{1}1, Jiahang Cao1,2^{1,2}1,2, Qiang Zhang1,2^{1,2}1,2, Jun Ma1,3^{1,3}1,3单位&#xff1a;1^{1}1香港科技大学&#xff08;广州&#xff09;&#xff0c;2^{2}2北京人形机器人创新中心&#xff0c;3^{3}3香港科技大学论文标题&#xff1a;L…

【前端教程】JavaScript 数组对象遍历与数据展示实战

在前端开发中&#xff0c;处理数组和对象是日常工作的基础。无论是篇文章将通过一个具体案例&#xff0c;详细讲解如何使用JavaScript遍历包含对象的数组&#xff0c;并将数据以清晰的格式展示在页面上。我们会从基础语法开始&#xff0c;逐步优化代码&#xff0c;最终实现一个…

无重复字符的最长子串,leetCode热题100,C++实现

题目来源&#xff1a;leetCode 3. 无重复字符的最长子串 - 力扣&#xff08;LeetCode&#xff09; 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长 子串 的长度。 解法 class Solution { public:int lengthOfLongestSubstring(string s) {unordered_set<…

卷积神经网络中1×1卷积的作用

part I &#xff1a;来源part II &#xff1a;应用part III &#xff1a;作用&#xff08;降维、升维、跨通道交互、增加非线性&#xff09;part IV &#xff1a;从fully-connected layers的角度理解一、来源&#xff1a;[1312.4400] Network In Network &#xff08;如果11…

VMware设置Ubuntu虚拟机桥接模式完整教程

VMware 设置 Ubuntu 虚拟机桥接模式完整教程 下面是一个详细的、避免出错的 VMware Ubuntu 桥接模式设置教程&#xff0c;包含常见问题的解决方案。 准备工作 确保宿主机&#xff08;Windows 11&#xff09;已连接到网络&#xff08;有线或无线&#xff09;确认您有管理员权限关…

浅析NVMe协议:DIF

文章目录概述DIF数据格式盘片支持DIFFormatPILPIMSETLBAF协议命令DIF支持PRACTPRACT0PRACT1PRCHK相关参考概述 NVMe协议将DIF信息作为元数据的一部分进行携带。 DIF数据格式 DIF的PI由多个字段组成&#xff0c;包括&#xff1a; Guard字段&#xff1a;基于逻辑块数据计算的C…

【观成科技】蔓灵花User下载者加密通信分析

概述2025年5月7日&#xff0c;蔓灵花&#xff08;BITTER&#xff09;组织针对巴基斯坦电信公司工作人员发起钓鱼邮件攻击&#xff0c;投递伪装为安全简报的恶意邮件&#xff0c;附件为IQY类型的Web查询文件。该文件在用户执行后通过HTTP协议获取远程CMD指令并执行&#xff0c;进…

Redis 保证数据不丢失

Redis 保证数据不丢失&#xff08;或最大限度减少丢失&#xff09;的核心是通过 持久化机制 结合 合理的配置策略 实现的。具体方案如下&#xff1a;一、核心&#xff1a;开启 Redis 持久化&#xff08;防止进程崩溃丢失数据&#xff09;Redis 提供两种持久化方式&#xff0c;可…

NUMA/SNC 4种组合下Stream+MLC性能对决:双路服务器BIOS调优全攻略

关于调整 BIOS NUMA 与 SNC 选项的 Stream / MLC 性能测试总结一、测试背景与目的在现代多路 Intel Xeon 服务器上&#xff0c;NUMA&#xff08;Non-Uniform Memory Access&#xff09;与 SNC&#xff08;Sub-NUMA Clustering&#xff09;是两项决定内存访问延迟与带宽的关键 B…