QTreeWidget折叠子项(折叠当前项的所有子项)
QTreeWidget折叠子项(折叠当前项的所有子项)
本文仅供本人知识总结使用,所以内容会比较浅显,不喜勿喷。
一、仅折叠子项
首先 Qt 已经提供了QTreeWidgetItem.setExpanded(expand)函数,当expand为true,则展开该项,否则折叠该项;搭配上QTreeWidgetItem.isExpanded()函数使用,即可完成折叠子项。
# 获取到当前项
item = self.ui.treeWidget.currentItem()
# 根据当前项状态,来设置展开或折叠
item.setExpanded(not item.isExpanded())
二、折叠当前项的所有子项
不过,配合QTreeWidgetItemIterator以及参数HasChildren,便可实现折叠当前项的所有子项。
# 获取起始节点
item = self.ui.treeWidget.currentItem()
# 存储当前项的状态
enable = item.isExpanded()
# 从item开始迭代 配合参数HasChildren 仅迭代有子节点的节点
it = QTreeWidgetItemIterator(item, QTreeWidgetItemIterator.HasChildren)
while it.value() != None:
it.value().setExpanded(enable)
it=it.__iadd__(1)
# 是否是根节点 当前节点是否为空
if item.parent() != None and it.value() != None:
# 如果当前节点的父节点和起始节点父节点一致时 则退出循环
if item.parent() == it.value().parent():
break
三、递归折叠当前项的所有子项
因为当时QT6的文档都是靠机翻的,一时没找到这个迭代器,就想了用递归的方式,但是代码实现有点问题,然后又发现了迭代器这个东西,这代码就不研究了,希望有哪位大佬能指正一下。
该方法未成功实现递归折叠当前项的所有子项功能!
def treeWidget_itemExpanded_AllChildren(item,enable,flag_item):
# 当前项有子项时 扫描它的子项是否还有 子子项
if item.childCount() > 0:
for i in range(0, item.childCount()):
item_c = item.child(i)
# 如果有子子项 and 当前子项没折叠 就递归扫描
if item.childCount() > 0 and item_c.isExpanded():
item = item_c
# 如果子项没有 子子项了
else:
item.setExpanded(enable)
if item.parent() == flag_item.parent():
return ;
else:
item = item.parent()
treeWidget_itemExpanded_AllChildren(item, enable, flag_item)
QTreeWidget折叠子项(折叠当前项的所有子项)的更多相关文章
- PyQt(Python+Qt)学习随笔:树型部件QTreeWidget提供的currentItem当前项操作访问方法
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 当前项是指当前鼠标和键盘焦点所在项,在项可以进行选择操作时,当前项可以是选中状态,也可以是未选中状态 ...
- vue多级复杂列表展开/折叠,全选/分组全选实现
首先,来看下效果图 在线体验地址:https://hxkj.vip/demo/multipleList/.温馨提示,打开之后按F12,使用手机模式食用,口味更佳! 可以看出,这个列表有三种展现形式: ...
- Uva 1630 折叠串
题目链接:https://uva.onlinejudge.org/external/16/1630.pdf 题意:折叠串,给一个字符串,相同部分可以折叠,折叠可以嵌套.求最短长度的一种折叠方法.括号和 ...
- Vim折叠模式设置
参考文章:http://www.cnblogs.com/welkinwalker/archive/2011/05/30/2063587.html set foldmethod=indent " ...
- Linux下面对于VIM编辑器的代码折叠使用与screen
VIM设置代码折叠 1. 折叠方式 可用选项 'foldmethod' 来设定折叠方式:set fdm=*****.有 6 种方法来选定折叠: manual 手工 ...
- vim代码折叠功能
问题:怎样在vim中实现代码折叠功能? 解决方法:直接使用vim自带的快捷键和命令,便可以实现功能强大的折叠 小试折叠: 1 :set fdm=marker 在vim中执行该命令 2 5G 将 ...
- vim 折叠代码技巧汇总
以下命令输入的方式: 如zo命令,先按z键,松开后按o键即可展开折叠. 一.打开.关闭折叠 zo 展开折叠,只展开最外层的折叠. zO 对所在范围内所有嵌套的折叠点展开,包括嵌套折叠. zc 折叠,只 ...
- C++标准库之右值引用相关:引用折叠
引用折叠 引用折叠出现的情况在于范型编程时. void f(T&& param); f(10); int x = 10; f(x); 这两者都可运行成功. 由于存在T&& ...
- 关于vim的折叠
参考: http://www.cnblogs.com/fakis/archive/2011/04/14/2016213.html 和 这篇文章: https://blog.csdn.net/benda ...
- vim折叠设置(转载)
vim折叠设置(转载) set foldmethod=indent "set default foldmethod"zi 打开关闭折叠"zv 查看此行zm 关闭折叠zM ...
随机推荐
- Gitlab的安装和使用
安装和配置必要的依赖项 yum install dnf sudo dnf install -y curl policycoreutils openssh-server #将SSH服务设置成开机自启动 ...
- Redis 注册成windows 服务并开机自启动
进入安装目录 输入命令redis-server --service-install redis.windows.conf 输入启动命令即可 redis-server --service-start ...
- 大语言模型的应用探索—AI Agent初探!
前言 大语言模型的应用之一是与大语言模型进行聊天也就是一个ChatBot,这个应用已经很广泛了. 接下来的一个应用就是AI Agent. AI Agent是人工智能代理(Artificial Inte ...
- 面试官:Java对象引用都有哪些类型?
哈喽,大家好,我是世杰. 本文我为大家介绍面试官经常考察的「Java对象引用相关内容」 照例在开头留一些面试考察内容~~ 面试连环call Java对象引用都有哪些类型? Java参数传递是值传递还是 ...
- ARP协议介绍与投毒攻击
目录 ARP是什么? ARP协议工作原理 ARP攻击原理 攻击软件 防范 Reference ARP是什么? ARP是通过网络地址(IP)来定位机器MAC地址的协议,它通过解析网络层地址(IP)来找寻 ...
- 4. 系统I/O
系统 I/O 示例代码: #include <iostream> // 标准库头文件 // #include "myheader.h" // 自己写的头文件 void ...
- SparkSQL on K8s 在网易传媒的落地实践
作者:鲁成祥 易顺 随着云原生技术的发展和成熟,大数据基础设施积极拥抱云原生是业内发展的一大趋势.网易传媒在 2021 年成功将 SparkSQL 部署到了 K8s 集群,并实现与部分在线业务的混合部 ...
- ps -ef | grep xxx 解释
上述内容为:命令拆解: ps:将某个进程显示出来-A 显示所有程序.-e 此参数的效果和指定"A"参数相同.-f 显示UID,PPIP,C与STIME栏位.grep命令是查找中间的 ...
- webpack4.15.1 学习笔记(四) — Tree shaking
目录 Tree shaking 原理 标记效果 副作用代码不可被删除 如何实现 Tree shaking 的几种方法 总结 Tree shaking 本质上为了消除无用的js代码,减少加载文件体积的方 ...
- Hack The Box
Hack The Box 地址 https://www.hackthebox.com/ HACKTHEBOX 是一个网络安全实战平台,提供了各种 靶机 和 实验室,同时也是一个庞大的 黑客社区 怎么注 ...