四QT通过递归获取当前对象的全部子对象
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))
四QT通过递归获取当前对象的全部子对象的更多相关文章
- struts2.1.6教程三、在Action获取Scope对象
引言:在前面的Action操作中,关键就是Action中的exectue方法,但是此方法并没有request.session.application等对象作为参数,自然就不能利用这些对象来操作.下面我 ...
- 17.在Action获取Scope对象
转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 引言:在前面的Action操作中,关键就是Action中的exectue方法 ...
- 在Action获取Scope对象
引言:在前面的Action操作中,关键就是Action中的exectue方法,但是此方法并没有request.session.application等对象作为参数,自然就不能利用这些对象来操作.下面我 ...
- 【MongoDB】递归获取字段更新表达式,更新复杂数据类型对象
在实际更新Mongo对象时发现,原有的更新代码无法更新复杂的数据类型对象.恰好看到张占岭老师有对该方法做相关的改进,因此全抄了下来. 总的核心思想就是运用反射与递归,对对象属性一层一层挖掘下去,循环创 ...
- QT槽函数获取信号发送对象
Qt 在槽函数中获取信号发送对象 Qt中提供了一个函数 qobject_cast(QObject *object),可以通过这个函数判断信号发出对象 Qt 帮助文档的解释: Returns the g ...
- WebAPI中无法获取Session对象的解决办法
在MVC的WebApi中默认是没有开启Session会话支持的.需要在Global中重写Init方法来指定会话需要支持的类型 public override void Init() { PostAut ...
- Unity关于获取游戏对象
我觉得Unity里面的Transform 和 GameObject就像两个双胞胎兄弟一样,这俩哥们很要好,我能直接找到你,你也能直接找到我.我看很多人喜欢在类里面去保存GameObject对象.解决G ...
- 第三章 EnumUtil根据值获取枚举对象
项目中使用枚举类的好处这里不再赘述,在使用枚举值时,通常需要根据值来获取枚举对象,下面介绍两种实现方案: 1.在枚举类中定义方法实现 首先给出如下性别枚举类: public enum SexEnum ...
- spring获取ApplicationContext对象的方法——ApplicationContextAware
一. 引言 工作之余,在看一下当年学的spring时,感觉我们以前都是通过get~ set~方法去取spring的Ioc取bean,今天就想能不能换种模型呢?因为我们在整合s2sh时,也许有那么一天就 ...
随机推荐
- 前端Node的实用方法
Node 一.什么是Node Node是以基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动.非阻塞式I/O模型(I/O是 input/output的缩写,即输入输出端口,在 ...
- [Java]数据分析--聚类
距离度量 需求:计算两点间的欧几里得距离.曼哈顿距离.切比雪夫距离.堪培拉距离 实现:利用commons.math3库相应函数 1 import org.apache.commons.math3.ml ...
- WPS 2010 页眉下方添加下划线
我们在使用Word2010编辑文档中时,有时需要在页眉下方删除或添加一条横线.本篇经验就来介绍一下删除和添加横线的方法. 工具/原料 Word 2010 一.删除横线 1 打开Word2010 ...
- lambda,filter,map,reduce
# lambda,filter,map,reduce from functools import reduce print('返回一个迭代器') print((x) for x in range(5) ...
- linux基础之用户及用户组管理
本节内容 用户管理 1. 为什么需要用户? 1.linux是一个多用户系统 2.权限管理(权限最小化) 2. 用户相关文件 /etc/passwd -->用户基本信息 /etc/shadow - ...
- centos7安装google-chrome
完整的安装步骤:https://www.tecmint.com/install-google-chrome-on-redhat-centos-fedora-linux/ 1.简单安装测试版:sudo ...
- C# Asp.Net 实现PPT/PDF转成图片(不依赖office)
最近公司有个需求,将PPT课件转成图片列表,然后在前端展示成轮播图,于是一开始通过Microsoft.Office.Interop.PowerPoint包实现了这个需求具体代码如下: /// < ...
- GO语言面向对象05---接口的多态
package main import "fmt" type Fighter interface { Attack() (bloodloss int) Defend() } /*骑 ...
- VTA:深度学习加速器堆栈
VTA:深度学习加速器堆栈 多功能Tensor加速器(VTA)是一个开放的,通用的,可定制的深度学习加速器,具有完整的基于TVM的编译器堆栈.设计VTA来展示主流深度学习加速器的最显着和共同的特征.T ...
- TensorRT 3:更快的TensorFlow推理和Volta支持
TensorRT 3:更快的TensorFlow推理和Volta支持 TensorRT 3: Faster TensorFlow Inference and Volta Support 英伟达Tens ...