使用QTreeView显示指定目录中的文件,并自定义Header

news2024/11/25 11:04:46

这次研究了QTreeView的用法,于是想使用QTreeView显示制定目录下的所有子目录和文件。过程中,遇到了几个问题,在此记录一下同时分享给大家,如有不妥之处,还请批评指正:

  1. 设置根目录后,仍然会展示系统中所有的目录,如下图所示:
    在这里插入图片描述
    针对此问题,解决方法比较简单,只需要给QTreeView同时设置RootPath和RootIndex即可
self._home = "F:/FileProtect/"
self.filemodel.setRootPath(self._home)
self.treeView.setModel(self.filemodel)
self.treeView.setRootIndex(self.filemodel.index(self._home))
  1. 使用QStandardItemModel获取文件目录后,QTreeView的Header显示的是英文表头,如图所示:
    在这里插入图片描述
    针对此问题,做了多重尝试,均已失败告终
    首先考虑在QFileSystemModel修改headData,结果该方法不生效
self.filemodel.setHeaderData(0, Qt.Horizontal, '文件名', 0)
self.filemodel.setHeaderData(1, Qt.Horizontal, '大小', 0)
self.filemodel.setHeaderData(2, Qt.Horizontal, '文件类型', 0)
self.filemodel.setHeaderData(3, Qt.Horizontal, '修改时间', 0)

最后找到了一种方法,感觉繁琐,但是有效。如果哪位朋友有更好的方法,还请分享一下。下边介绍我这里的方法
首先获取QTreeView的header,然后创建一个QStandardItemModel,并只设置headerData,然后将header的Model设置为QStandardItemModel。这里有个需要注意的点就是: 设置header的Model一定要在给QTreeView设置Model之后

完整代码如下:

 self._home = "F:/FileProtect/"
 self.filemodel = QFileSystemModel()
 self.filemodel.setFilter(QtCore.QDir.Dirs | QtCore.QDir.Files | QtCore.QDir.NoDotAndDotDot)
 self.filemodel.setRootPath(self._home)
 self.treeView.setModel(self.filemodel) # 设置QTreeView的Model
 
 self.headerModel = QStandardItemModel()
 self.headerModel.setColumnCount(4)  # 设置model的列数
 self.headerModel.setHeaderData(0, Qt.Horizontal, '文件名', 0)
 self.headerModel.setHeaderData(1, Qt.Horizontal, '大小', 0)
 self.headerModel.setHeaderData(2, Qt.Horizontal, '文件类型', 0)
 self.headerModel.setHeaderData(3, Qt.Horizontal, '修改时间', 0)
 header = self.treeView.header()
 header.setModel(self.headerModel) # 设置QTreeView#Header的Model
 self.treeView.setRootIndex(self.filemodel.index(self._home)) # 设置RootIndex

最后运行效果如下:
在这里插入图片描述

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

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

相关文章

thinkphp系列vulhub所有漏洞复现ThinkPHP 2.x 任意代码执行漏洞,ThinkPHP5 5.0.22/5.1.29 远程代码执行漏洞

ThinkPHP 2.x 任意代码执行漏洞 漏洞详情: hinkPHP 2.x版本中,使用preg_replace的/e模式匹配路由: $res preg_replace((\w).$depr.([^.$depr.\/])e, $var[\\\1\]"\\2";, implode($depr,$paths));导致用户的输入参数被插入双引号…

力扣 90. 子集 II

题目来源:https://leetcode.cn/problems/subsets-ii/description/ C题解1:由于解集不能包含重复的子集,所以我们先对nums进行排序, 以便后续去重。 采用递归回溯法,对每个子集都即使保存,在完成第一次子集…

一文晓得SaaS、IaaS和 PaaS 是什么,三者的区别是?

接下来我们直接直奔主题 首先,概念走起。 IaaS:基础设施服务, Infrastructure-as-a-service PaaS:平台服务,Platform-as-a-service SaaS:软件服务,Software-as-a-service IaaS 基础设施即服…

【C++】C++11的新特性

文章目录 1. C11简介2. 统一的列表初始化2.1 {}统一初始化2.2 std::initializer_list 3. 声明的新方式和范围for循环3.1 decltype3.2 auto&nullptr&范围for循环 4. STL的变化4.1 新容器4.2 新接口 1. C11简介 ​ 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1…

Java并发编程面试题

一、线程、进程、程序 进程: 我们把运行中的程序叫做进程,每个进程都会占用内存与CPU资源,进程与进程之间互相独立. 线程: 线程就是进程中的一个执行单元,负责当前进程中程序的执行。一个进程可以包含多个线程。多线程可以提高程序的并行运…

Stable Diffusion 常用主流checkpoint模型

AbyssOrangeMix2 https://civitai.com/models/4437/abyssorangemix2-sfwsoft-nsfw dosmix https://civitai.com/models/6250/dosmix Counterfeit-V3.0 https://civitai.com/models/4468/counterfeit-v30 万象熔炉 | Anything V5/Ink QteaMix 通用Q版模型 https://civitai.c…

Spring Boot 中的监控及使用

Spring Boot 中的监控及使用 Spring Boot 是一个非常流行的 Java 应用程序开发框架,它提供了一种快速构建应用程序的方法。除此之外,Spring Boot 还提供了一系列的监控功能,方便开发人员对应用程序进行监控和管理。本文将讨论 Spring Boot 中…

MachineLearningWu_第1+2章_SupervisedLearningUnsupervisedLearning

x.1 笔记 常见Supervised Learning的app,会有input和label 线性拟合做回归, 分类问题如下,当单个输入但是多个类别信息时可以简化为单轴向, 当分类问题是多输入时,可以简化为特征空间如下, *无监督算法的核…

SiLM27624系列 双通道30V, 5A/5A高速低边门极驱动器介绍

在开关电源系统中,需要利用门极驱动器来有效地驱动功率器件,实现功率器件的快速开关,以减少开关功率损耗、提高系统效率。在 GaN 等新兴的宽带隙功率器件技术中,需要快速的传输延时、精准的延迟匹配、极强的驱动能力以满足系统中高…

移动隔断地板无轨道,只需将轨道安装于天花板上

移动隔断地板无轨道设计可以提供更加灵活的空间划分和布局选择。相较于传统的固定轨道系统,只需将轨道安装在天花板上,就能实现移动隔断的收放和推动。这种设计可以避免地板上的轨道对于日常活动和清洁的干扰,并且减少了地板安装的复杂性。 在…

HDLBits刷题笔记9:Circuits.Sequential Logic.Counters + Shift Registers

Counters Four-bit binary counter module top_module (input clk,input reset, // Synchronous active-high resetoutput reg [3:0] q);always (posedge clk) beginif(reset)q < 0;elseq < q 1;end endmoduleDecade counter 建立一个计数器&#xff0c;从0计数…

二分类结局变量Logistic回归临床模型预测—— 外部数据集验证

1. 介绍 2. 基线特征 3. 单因素多因素logistic回归分析及三线表 4. 构建临床列线图模型 5. 模型评价 6. 外部数据集验证 7. 另一种发文章的办法,分训练集和测试集,分析上述3-6节的内容 外部数据集验证,就是找一个别的数据集,可以是别家医院的,也可是数据库的,但是…

机器视觉初步12:C#入门初步(有代码示例)

文章目录 基础部分概述1. 变量&#xff1a;2. 数据类型&#xff1a;3. 运算符&#xff1a;4. 控制语句&#xff1a;5. 字符串和数组&#xff1a;6. 类型转换&#xff1a;7. 输出和输入&#xff1a;8. 变量命名&#xff1a;9. 函数&#xff1a;10. 枚举值的比较&#xff1a;11. …

红旗软件与派盘互认证成功

近年来,随着数据的不断增长和扩张,云计算、大数据、人工智能等技术已成为数字化转型的推动力。在这个背景下,红旗软件和派盘之间的互认证也成为了企业用户进行数据备份和管理的理想选择。 红旗软件是由中国科学院成立的软件公司,其主要产品有红旗Linux操作系统、红旗开发工…

今日分享简单的下划线转驼峰方法

简单的下划线转驼峰方法… #代码片段分享# function underLine2CamelCase(string){return string.replace( /_([a-z])/g, function( all, letter ) {return letter.toUpperCase();}); }

为什么空间坐标系之间的线性变换关系 = 坐标轴向量堆叠?

相机模型存在4个坐标系&#xff1a;世界坐标系、摄像机坐标系、图像物理坐标系和图像像素坐标系。 光心&#xff1a;图像的中心。 光轴&#xff1a;穿过图像的光心&#xff0c;与图像平面垂直的轴。 世界坐标系(Xw,Yw,Zw)&#xff1a;是客观三维世界的绝对坐标系&#xff0c…

【二叉排序树(也叫二叉搜索树)本质就是中序遍历是有序的二叉树】一道题讲解二叉排序树的本质,以及操作代码(通俗易懂的总结帮助理解操作)

1. 二叉排序树&#xff08;中序遍历是有序的&#xff09; 解释一下删除操作的第三点&#xff1a; 首先我们要清楚&#xff1a; 二叉排序树的特点是 中序遍历&#xff08;左根右&#xff09;是有序的 所以如果删除的根节点有左右子树 那么我们为了保证有序 就要把 根节点左子…

Arm64架构(MacBookPro M1)虚拟机安装k8s1.27.3版本记录及问题总结

目录 一、介绍二、安装前设置2.1 设置hostname2.2 关闭防火墙2.3 关闭selinux2.4 关闭swap2.5 允许 iptables 检查桥接流量2.6 安装Docker 三、安装container runtime3.1 安装containerd3.2 安装cri-docker 四、安装k8s集群4.1 配置aliyun的kubernetes yum源4.2 下载 kubelet k…

RTL8309M实现VLAN功能-驱动编进内核

部分硬件实现图 一、使内核支持802.1Q功能 1、使用内核kernel版本4.19.232 2、make menuconfig 配置内核 3、进入Networking support 4、进入Networking options 5、把这些都编进内核 6、点击保存退出 CONFIG_GARPy CONFIG_MRPy CONFIG_BRIDGE_VLAN_FILTERINGy CONFIG_VLAN…

2023年6月第4周大模型荟萃

2023年6月第4周大模型荟萃 2023.6.30版权声明&#xff1a;本文为博主chszs的原创文章&#xff0c;未经博主允许不得转载。 1、腾讯云首次公布大模型进展 6月19日&#xff0c;腾讯云召开行业大模型及智能应用技术峰会&#xff0c;首次公布腾讯云行业大模型研发进展&#xff0…