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折叠子项(折叠当前项的所有子项)的更多相关文章

  1. PyQt(Python+Qt)学习随笔:树型部件QTreeWidget提供的currentItem当前项操作访问方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 当前项是指当前鼠标和键盘焦点所在项,在项可以进行选择操作时,当前项可以是选中状态,也可以是未选中状态 ...

  2. vue多级复杂列表展开/折叠,全选/分组全选实现

    首先,来看下效果图 在线体验地址:https://hxkj.vip/demo/multipleList/.温馨提示,打开之后按F12,使用手机模式食用,口味更佳! 可以看出,这个列表有三种展现形式: ...

  3. Uva 1630 折叠串

    题目链接:https://uva.onlinejudge.org/external/16/1630.pdf 题意:折叠串,给一个字符串,相同部分可以折叠,折叠可以嵌套.求最短长度的一种折叠方法.括号和 ...

  4. Vim折叠模式设置

    参考文章:http://www.cnblogs.com/welkinwalker/archive/2011/05/30/2063587.html set foldmethod=indent " ...

  5. Linux下面对于VIM编辑器的代码折叠使用与screen

    VIM设置代码折叠 1. 折叠方式 可用选项 'foldmethod' 来设定折叠方式:set fdm=*****.有 6 种方法来选定折叠:          manual           手工 ...

  6. vim代码折叠功能

    问题:怎样在vim中实现代码折叠功能? 解决方法:直接使用vim自带的快捷键和命令,便可以实现功能强大的折叠 小试折叠: 1  :set fdm=marker  在vim中执行该命令 2  5G  将 ...

  7. vim 折叠代码技巧汇总

    以下命令输入的方式: 如zo命令,先按z键,松开后按o键即可展开折叠. 一.打开.关闭折叠 zo 展开折叠,只展开最外层的折叠. zO 对所在范围内所有嵌套的折叠点展开,包括嵌套折叠. zc 折叠,只 ...

  8. C++标准库之右值引用相关:引用折叠

    引用折叠 引用折叠出现的情况在于范型编程时. void f(T&& param); f(10); int x = 10; f(x); 这两者都可运行成功. 由于存在T&& ...

  9. 关于vim的折叠

    参考: http://www.cnblogs.com/fakis/archive/2011/04/14/2016213.html 和 这篇文章: https://blog.csdn.net/benda ...

  10. vim折叠设置(转载)

    vim折叠设置(转载) set foldmethod=indent "set default foldmethod"zi 打开关闭折叠"zv 查看此行zm 关闭折叠zM ...

随机推荐

  1. QT学习:00 介绍

    --- title: framework-cpp-qt-00-介绍 date: 2020-04-08 15:41:54 categories: tags: - c/c++ - qt --- 章节描述: ...

  2. LED虚拟拍摄-跟踪算法

    LED虚拟拍摄-跟踪算法 图引用拍摄黑科技,LED虚拟影棚揭秘 标定流程 上面是一台Track设备,现精度比较高的主要是Redspy,Mosys,一般影视用这二种,其底层技术参考SMAL单目+惯性传感 ...

  3. Nuxt3 的生命周期和钩子函数(五)

    title: Nuxt3 的生命周期和钩子函数(五) date: 2024/6/29 updated: 2024/6/29 author: cmdragon excerpt: 摘要:本文详细介绍了Nu ...

  4. 请查收“国产化率认证报告”(100%)——RK3568J工业核心板

    创龙科技RK3568J核心板获得"100%国产化"认证日前,创龙科技"国产化率100%认证"的核心板再添一员!RK3568J工业核心板(SOM-TL3568)获 ...

  5. 一次Java服务内存过高的分析过程

    现象 年前,收到了短信报警,显示A服务的某台机器内存过高,超过80% 如上图所示,内存会阶段性增加.奇怪的是,十多台机器中只有这一台有这个问题 堆内内存分析 最先怀疑是内存泄漏的问题,所以首先使用jm ...

  6. Yuno loves sqrt technology I 题解

    申明:由于本人卡常技艺不佳,本题解复杂度正确但无法通过 首先分块,然后考虑分开计算贡献维护,看下面一张图: 我们将贡献拆分为 \(ans(A) + ans(B) + ans(C) + ans(AB) ...

  7. 一个简单的html时间显示页面-可做小工具

    代码由 chatgpt3.5 生成,已验证 index.html <!DOCTYPE html> <html> <head> <meta charset=&q ...

  8. const isProduction = process.env.NODE_ENV === 'production'; 作用

    一. process 要理解 process.env.NODE_ENV 就必须要了解 process,process 是 node 的全局变量,并且 process 有 env 这个属性, 但是没有 ...

  9. 【算法】在vue3的ts代码中分组group聚合源数据列表

    有一个IList<any>()对象列表, 示例数据为[{id:'1',fieldName:'field1',value:'1'},{id:'1',fieldName:'field2',va ...

  10. Django使用 DoesNotExist 异常和 Logger 来记录异常情况

    代码不仅处理了特定的异常类型,还可以添加更多的调试信息来帮助诊断问题.可以使用 DoesNotExist 异常和 Logger 来记录异常情况. from django.core.exceptions ...