四QT通过递归获取当前对象的全部子对象
2024-09-03 10:05:52
children()只能获取到当前对象的子项,但是子项的子项就获取不到了,于是想到了用递归去获取全部子项。
主要代码如下:
void HomePage::getAllChild(QObjectList parentList, QObjectList &allChildList)
{
for(int i = 0; i < parentList.size(); ++i)
{
QObject *child = parentList.at(i);
QObjectList tmpList = child->children();
if(tmpList.size() == 0)
{
allChildList.append(child);//没有子项就添加到allChildList
continue;
}
else
{
getAllChild(tmpList, allChildList);//有子项就继续递归
}
}
}
首次调用该代码的方法如下:
QObjectList parentList = this->children();
QObjectList allChildList;
getAllChild(parentList, allChildList);
qDebug() << allChildList;
结果如下:
(QPushButton(0x17681e0, name = "btn_dev"), QPushButton(0x1767fe0, name = "btn_scene"), QPushButton(0x17679a0, name = "btn_doorbell"), QPushButton(0x1768160, name = "btn_set"), QLabel(0x1767920, name = "label_dev"), QLabel(0x17684e0, name = "label_scene"), QLabel(0x17678a0, name = "label_doorbell"), QLabel(0x1767aa0, name = "label_set"), QGridLayout(0x176ff10, name = "gridLayout"), QLabel(0x1768520, name = "label_hhmm"), QLabel(0x1777800, name = "label_MMdd"), QLabel(0x1777480, name = "label_ddd"), QTimer(0x177a3b0))
最新文章
- Java多线程系列目录(共43篇)
- 【转】 深入main函数中的参数argc,argv的使用详解
- Asp.Net Web API 2第七课——Web API异常处理
- opencv实现图片缩放
- 并查集(Union-Find)算法介绍
- IIS网站部署后,程序常见错误记录
- [Swift]LeetCode31. 下一个排列 | Next Permutation
- CF1029E
- Nginx Java 日志切割脚本
- https网页加载http资源导致的页面报错及解决方案
- pandas获取groupby分组里最大值所在的行,获取第一个等操作
- [转]protoc-gen-lua 编译、安装、使用教程
- 02: SocketServer服务
- Linux 的伪终端的基本原理 及其在远程登录(SSH,telnet等)中的应用
- DOS中符号的英文对照
- Centos7.3 坑爹网络配置
- @PostConstruct与@PreDestroy讲解及实例
- 面向切面编程(AOP)
- 安卓Eclipse开发人员的福音
- 关于python中的 if __name__ == &#39;main&#39;
热门文章
- [bug] java.sql.SQLSyntaxErrorException: Table &#39;mysql.tb_item&#39; doesn&#39;t exist
- ipmitool -I lanplus -H IPADDR -U USERNAME -P PASSWORD power reset
- 使用 dd 命令进行硬盘 I/O 性能检测
- 手机POS机
- Centos7 网卡DHCP重新获取IP地址
- rocketmq常见问题及使用 新手篇
- 图解CSS布局(一)- Grid布局
- node.js学习(6)创建和删除目录
- ImportError:no mudle named &#39;cv2&#39;
- HashMap源码:聊聊Map的遍历性能问题(一)