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通过递归获取当前对象的全部子对象的更多相关文章

  1. struts2.1.6教程三、在Action获取Scope对象

    引言:在前面的Action操作中,关键就是Action中的exectue方法,但是此方法并没有request.session.application等对象作为参数,自然就不能利用这些对象来操作.下面我 ...

  2. 17.在Action获取Scope对象

    转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 引言:在前面的Action操作中,关键就是Action中的exectue方法 ...

  3. 在Action获取Scope对象

    引言:在前面的Action操作中,关键就是Action中的exectue方法,但是此方法并没有request.session.application等对象作为参数,自然就不能利用这些对象来操作.下面我 ...

  4. 【MongoDB】递归获取字段更新表达式,更新复杂数据类型对象

    在实际更新Mongo对象时发现,原有的更新代码无法更新复杂的数据类型对象.恰好看到张占岭老师有对该方法做相关的改进,因此全抄了下来. 总的核心思想就是运用反射与递归,对对象属性一层一层挖掘下去,循环创 ...

  5. QT槽函数获取信号发送对象

    Qt 在槽函数中获取信号发送对象 Qt中提供了一个函数 qobject_cast(QObject *object),可以通过这个函数判断信号发出对象 Qt 帮助文档的解释: Returns the g ...

  6. WebAPI中无法获取Session对象的解决办法

    在MVC的WebApi中默认是没有开启Session会话支持的.需要在Global中重写Init方法来指定会话需要支持的类型 public override void Init() { PostAut ...

  7. Unity关于获取游戏对象

    我觉得Unity里面的Transform 和 GameObject就像两个双胞胎兄弟一样,这俩哥们很要好,我能直接找到你,你也能直接找到我.我看很多人喜欢在类里面去保存GameObject对象.解决G ...

  8. 第三章 EnumUtil根据值获取枚举对象

    项目中使用枚举类的好处这里不再赘述,在使用枚举值时,通常需要根据值来获取枚举对象,下面介绍两种实现方案: 1.在枚举类中定义方法实现 首先给出如下性别枚举类: public enum SexEnum ...

  9. spring获取ApplicationContext对象的方法——ApplicationContextAware

    一. 引言 工作之余,在看一下当年学的spring时,感觉我们以前都是通过get~ set~方法去取spring的Ioc取bean,今天就想能不能换种模型呢?因为我们在整合s2sh时,也许有那么一天就 ...

随机推荐

  1. 前端Node的实用方法

    Node 一.什么是Node Node是以基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动.非阻塞式I/O模型(I/O是 input/output的缩写,即输入输出端口,在 ...

  2. [Java]数据分析--聚类

    距离度量 需求:计算两点间的欧几里得距离.曼哈顿距离.切比雪夫距离.堪培拉距离 实现:利用commons.math3库相应函数 1 import org.apache.commons.math3.ml ...

  3. WPS 2010 页眉下方添加下划线

    我们在使用Word2010编辑文档中时,有时需要在页眉下方删除或添加一条横线.本篇经验就来介绍一下删除和添加横线的方法. 工具/原料   Word 2010 一.删除横线   1 打开Word2010 ...

  4. lambda,filter,map,reduce

    # lambda,filter,map,reduce from functools import reduce print('返回一个迭代器') print((x) for x in range(5) ...

  5. linux基础之用户及用户组管理

    本节内容 用户管理 1. 为什么需要用户? 1.linux是一个多用户系统 2.权限管理(权限最小化) 2. 用户相关文件 /etc/passwd -->用户基本信息 /etc/shadow - ...

  6. centos7安装google-chrome

    完整的安装步骤:https://www.tecmint.com/install-google-chrome-on-redhat-centos-fedora-linux/ 1.简单安装测试版:sudo ...

  7. C# Asp.Net 实现PPT/PDF转成图片(不依赖office)

    最近公司有个需求,将PPT课件转成图片列表,然后在前端展示成轮播图,于是一开始通过Microsoft.Office.Interop.PowerPoint包实现了这个需求具体代码如下: /// < ...

  8. GO语言面向对象05---接口的多态

    package main import "fmt" type Fighter interface { Attack() (bloodloss int) Defend() } /*骑 ...

  9. VTA:深度学习加速器堆栈

    VTA:深度学习加速器堆栈 多功能Tensor加速器(VTA)是一个开放的,通用的,可定制的深度学习加速器,具有完整的基于TVM的编译器堆栈.设计VTA来展示主流深度学习加速器的最显着和共同的特征.T ...

  10. TensorRT 3:更快的TensorFlow推理和Volta支持

    TensorRT 3:更快的TensorFlow推理和Volta支持 TensorRT 3: Faster TensorFlow Inference and Volta Support 英伟达Tens ...