PySide6/PyQt开发xml编辑器(1)
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)
PySide6/PyQt开发xml编辑器(1)的更多相关文章
- 雷林鹏分享:XML 编辑器
XML 编辑器 如果您希望极认真地学习和使用 XML,那么您一定会从一款专业的 XML 编辑器的使用上受益. XML 是基于文本的 XML 是基于文本的标记语言. 关于 XML 的一件很重要的事情是, ...
- MyEclipse XML & XML架构教程:XML编辑器
[MyEclipse CI 2019.4.0安装包下载] 1. MyEclipse中的XML编辑 本文档介绍了MyEclipse XML Editor中可用的一些函数.MyEclipse XML编辑器 ...
- Flex xml编辑器(老外写的)
github上的一个项目老外写的xml编辑器,灵活利用了Tree的labelFunction实现节点运行时展现.开源地址是 https://github.com/softinsure/XML-Edit ...
- C# 开发XML Web Service与Java开发WebService
一.web service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量 ...
- MVC开发Markdown编辑器(2)
MVC开发Markdown编辑器(2) MVC Markdown 实时预览 我希望实现一个在线实时预览的Markdown编辑器,左边是编辑处,右边是实时预览界面. 准备工作 引入相关js和css 这里 ...
- MVC开发Markdown编辑器(1)
MVC markdown MVC开发Markdown编辑器(1) 前言 安装 解析 结束语 前言 想在近段时间通过mvc开发个人博客,编辑器希望是markdown风格的,这样写文字会很方便.首先先解决 ...
- iOS开发 XML解析和下拉刷新,上拉加载更多
iOS开发 XML解析和下拉刷新,上拉加载更多 1.XML格式 <?xml version="1.0" encoding="utf-8" ?> 表示 ...
- 使用ICSharpCode.TextEditor制作一个语法高亮显示的XML编辑器
使用ICSharpCode.TextEditor制作一个语法高亮显示的XML编辑器 品高工作流 的流程模拟器中使用了一个具有语法高亮和折叠功能的XML编辑器,其核心就是用了SharpDevelop中的 ...
- PyQt开发案例:结合QDial实现的QStackedWidget堆叠窗口程序例子及完整代码
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.案例说明 本案例是老猿在学习QStackedWidget中的一个测试案例,该案例使用QStack ...
随机推荐
- 一文带你读懂zookeeper在大数据生态的应用
一个执着于技术的公众号 一.简述 在一群动物掌管的世界中,动物没有人类聪明的思想,为了保持动物世界的生态平衡,这时,动物管理员-zookeeper诞生了. 打开Apache zookeeper的官网, ...
- 百度3D离线地图开发,3D离线地图开发,百度地图离线开发
3D离线地图介绍(3D离线采用矢量数据作为地图基础,可保持地图数据最新) 一.开发中引用3D离线地图(可独立部署通过内外IP+端口进行访问,也可拷贝js库文件到项目中通过绝对路径访问) 1).离线AP ...
- 992. Sort Array By Parity II - LeetCode
Question 992. Sort Array By Parity II Solution 题目大意:给一个int数组,一半是奇数一半是偶数,分别对偶数数和奇数数排序并要求这个数本身是偶数要放在偶数 ...
- 219. Contains Duplicate II - LeetCode
Question 219. Contains Duplicate II Solution 题目大意:数组中两个相同元素的坐标之差小于给定的k,返回true,否则返回false 思路:用一个map记录每 ...
- 以人类 Person 为基类设计学生类 Student 和教师类 Teacher
学习内容:实验二以人类 Person 为基类设计学生类 Student 和教师类 Teacher 示例代码: package 实验二; import java.util.Scanner; class ...
- 【Java面试】如何中断一个正在运行的线程?
一个去京东面试的工作了5年的粉丝来找我说: Mic老师,你说并发编程很重要,果然我今天又挂在一道并发编程的面试题上了. 我问他问题是什么,他说:"如何中断一个正在运行中的线程?". ...
- Java - ConcurrentHashMap的原理
Java - ConcurrentHashMap的原理 **这是JDK1.7的实现** ConcurrentHashMap 类中包含两个静态内部类 HashEntry 和 Segment. HashE ...
- B 树的简单认识
理解 B 树的概念 B 树是一种自平衡的查找树,能够保持数据有序.这种数据结构能够让查找数据.顺序访问.插入数据及删除数据的动作,都能在对数时间内完成. 同一般的二叉查找树不同,B 树是一棵多路平衡查 ...
- 记一次ms17-010复现过程
最近碰到业务需要使用msf,以前了解过,后面都忘记了.这次干脆写下来,省的每次去找别人写的. 首先是使用nmap探测端口 nmap -O -sV 192.168.153.130 --script=vu ...
- Vue MD5加密你用吗?
安装 npm install --save js-md5 1.按需引入(在你需要的项目中引入) 引入: import md5 from 'js-md5' 使用: md5('加密信息') 2.全局引入( ...