博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
找孩子…
阅读量:5012 次
发布时间:2019-06-12

本文共 1369 字,大约阅读时间需要 4 分钟。

[2010年08月03号文档]

这篇文章标题比较特殊,呵呵,昨天在读别人源代码得时候发现了一个函数 :findChildren() ,当时就吸引我了,这是什么意思,翻了下文当终于明白是干什么用得了。在实际得Qt编程过程中,通常会有多个空间嵌套,就比如说:主窗体是QMainWdow,中央挂件是QTabWidget,而每一个QTabWidget子窗口中又有QTextEdit,这样得组合就是经典得多标签页文本编辑器样式,当然这个暑假我也在做这种编辑器。通常我们可以很容易得获得QMainWindow上QTabWidget控件得对象,但是想要直接操作QTabWidget中嵌套得QTextEdit就不能直接引用,现在我们有了这个函数就可以轻松搞定了,函数原型如下:

QList
QObject::findChildren(const QString &name=QString()) const

当然关于“找孩子”得函数不只这一个,具体得大家可以再查文档,这里给出一个例子:

QList
lineEdit = tabWidget.findChildren
();

这句话的意思就是在tabWidget 挂件种寻找所有得QLineEdit控件,然后返回给QList容器(QList容器中每一个元素都为 QLineEdit * 类型),下面给出一个实例:

描述:主窗体为QMainWindow,中央挂件为QTabWidget,每个子页面包括若干个QLineEdit(注意:Tab1页面有两个,Tab2页面有1个),当单击“setText”按钮时候,自动给每一个QLineEdit填充文字。

 

`

关键代码如下:

void MainWindow::on_pushButton_clicked(){    QList
lineEdit=ui->tabWidget->findChildren
(); for (int i=0;i
setText("www.hicjiajia.cn");}

`

这样对我们操作多嵌套式得控件确实很方便,但是又有一个问题了,这种方法会将所有QLineEdit都给影响到了,但是我现在想只让某个特定得QLineEdit来响应怎摸办,还好,findChildren()函数还是可以带参数得:

QList
lineEdit = tabWidget.findChildren
("lineEdit");

注意:括号里得 lineEdit 参数为控件得 objectName ,因此这里我们可以指定任何控件,很方便…. 改成上述代码效果如图:

 

注意: findChild()与 findChildren()不支持MSVC6,因此Qt专门提供了另外两个兼容VC6得“找孩子函数”分别为:qFindChild()与qFindChildren()

转载于:https://www.cnblogs.com/hicjiajia/archive/2012/05/30/2526777.html

你可能感兴趣的文章
leetcode : Count and Say [基本功]
查看>>
洛谷 P2485 [SDOI2011]计算器 解题报告
查看>>
c#访问存储过程
查看>>
Slickflow.NET 开源工作流引擎基础介绍(三) -- 基于HTML5/Bootstrap的Web流程设计器
查看>>
Node教程
查看>>
java将字段映射成另一个字段,关于 接口传参 字段不对应转换
查看>>
Redis
查看>>
字段和属性的区别
查看>>
HTTP(一)工作机制
查看>>
条形码扫描枪数据读取的问题
查看>>
$this->autoRender = false
查看>>
健壮的 Java 基准测试
查看>>
phpstorm查看类的继承关系
查看>>
git create clone(仓库)
查看>>
chmod修改文件权限的命令
查看>>
新博客牵至简书
查看>>
矩阵求逆
查看>>
在 Windows 8、Windows 10 桌面模式下的 .NET Framework 程序中,引用 Windows.Runtime 的 API。...
查看>>
2015 8月24号 工作计划与实行
查看>>
MVC AJAX
查看>>