Qt 之 findChild

这篇具有很好参考价值的文章主要介绍了Qt 之 findChild。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、简述

  • 在Qt编程过程中,通常会有多个部件嵌套,而大多数部件都有父子依赖关系,但是有些情况下不能直接引用子部件,这时我们可以通过父部件来findChild -“查找孩子”。
  • 在实际得Qt编程过程中,通常会有多个空间嵌套,就比如说:主窗体是QMainWdow,中央挂件是QTabWidget,而每一个QTabWidget子窗口中又有QTextEdit,这样得组合就是经典得多标签页文本编辑器样式,当然这个暑假我也在做这种编辑器。通常我们可以很容易得获得QMainWindow上QTabWidget控件得对象,但是想要直接操作QTabWidget中嵌套得QTextEdit就不能直接引用

二、原型

Qt 之 findChild
Qt 之 findChild

三、使用示例

  • 查找objectName为button1的QPushButton
QPushButton *button = parentWidget->findChild<QPushButton *>("button1");
  • 查找父类下所有的子对象
QListWidget *list = parentWidget->findChild<QListWidget *>();
  • 查找父类下objectName为button1的直接子对象
QPushButton *button = parentWidget->findChild<QPushButton *>("button1", Qt::FindDirectChildrenOnly);
  • 查找父类下所有的直接子对象
QListWidget *list = parentWidget->findChild<QListWidget *>(QString(), Qt::FindDirectChildrenOnly);

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

QList<QLineEdit *> lineEdit = tabWidget.findChildren<QLineEdit *>();

这句话的意思就是在tabWidget挂件种寻找所有得QLineEdit控件,然后返回给QList容器(QList容器中每一个元素都为 QLineEdit *类型),下面给出一个实例:
描述:主窗体为QMainWindow,中央挂件为QTabWidget,每个子页面包括若干个QLineEdit(注意:Tab1页面有两个,Tab2页面有1个),当单击“setText”按钮时候,自动给每一个QLineEdit填充文字。

关键代码如下:

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

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

QList<QLineEdit *> lineEdit = tabWidget.findChildren<QLineEdit *>("lineEdit");

注意:括号里得 lineEdit 参数为控件得 objectName ,因此这里我们可以指定任何控件,很方便文章来源地址https://www.toymoban.com/news/detail-414795.html

注意:Widget根据容器的不同寻找的方式不一样比如QWidget_3里面有LineEdit只需要直接找ui.QWidget_3但是如果是QStackWidget里面的化就是直接放ui->stackedDecive2->widget(0)里面就可以了

到了这里,关于Qt 之 findChild的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在HBase中执行查询操作通常使用HBase Shell或编程语言API(如Java或Python)来执行

    在HBase中执行查询操作通常使用HBase Shell或编程语言API(如Java或Python)来执行。以下是使用HBase Shell进行查询的一些示例: 单行查询:获取指定行键的数据。 扫描表:按行范围获取表中的多个行的数据。 过滤器查询:使用过滤器指定查询条件来获取数据。 列族查询:获取指

    2024年01月21日
    浏览(47)
  • Python编程中,出现“ModuleNotFoundError: No module named ‘config’”的错误提示信息是比较常见的。如此提示通常表...

    Python编程中,出现“ModuleNotFoundError: No module named ‘config’”的错误提示信息是比较常见的。如此提示通常表示在当前的运行环境中找不到名为“config”的Python模块,导致相应的程序无法正常执行。 这种错误提示常常令人困惑,因为我们无法直接得知到底是哪个Python模块出了

    2024年02月10日
    浏览(60)
  • 简述TCP/IP建立连接过程(附流程和代码)

    前言: TCP/IP 定义了计算机操作系统如何连入互联网,以及数据传输的标准。 TCP和IP是属于不同协议栈层的,只是这两个协议属于协议族里最重要的协议,所以协议栈或者模型以之命名了。 本段转载C语言中文网:TCP/IP 不是指一个协议,也不是 TCP 和 IP 这两个协议的合称,而

    2024年02月04日
    浏览(94)
  • vue2和vue3的渲染过程简述版

    在Vue 2的渲染过程中,包括以下几个关键步骤: 解析模板:Vue 2使用基于HTML语法的模板,首先会将模板解析成抽象语法树(AST),用于后续的编译和渲染过程。 编译模板:将解析后的抽象语法树编译成渲染函数。编译过程包括静态标记、生成可复用的渲染函数以及处理动态绑

    2024年02月10日
    浏览(37)
  • 【计算机网络经典面试题】简述 TCP 三次握手和四次挥手的过程

    1)第一次握手:建立连接时,客户端向服务器发送SYN包(seq=x),请求建立连接,等待确认 2)第二次握手:服务端收到客户端的SYN包,回一个ACK包(ACK=x+1)确认收到,同时发送一个SYN包(seq=y)给客户端 3)第三次握手:客户端收到SYN+ACK包,再回一个ACK包(ACK=y+1)告诉服务

    2024年04月08日
    浏览(59)
  • 【网络编程】网络通信基础——简述TCP/IP协议

    个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程的一点学习心得,欢迎大家在评论区交流讨论💌 ip地址简单来说就是用来描述网络上一个设备的所在位置。 端

    2024年02月04日
    浏览(62)
  • QT之多个界面相互切换 (stackedWidget控件)

    stackedWidget控件:   可以自由在多个widget切换,可以通过点击顶部菜单,显示不同界面,在实际开发中应用很广泛。 1. 添加控件, 在设计界面左侧添加 stackedWidget控件 2. 增加几个  widget 界面  3. 将这几个 widget 插入到 stackedWidget 首先定义 一个枚举量, 存放每个界面的编号

    2024年02月11日
    浏览(94)
  • 深入详解使用 RabbitMQ 过程中涉及到的多个细节问题(面试可用)

    目录 1、基础类问题 2、cluster 相关问题 3、综合性问题 4、参考资料 C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...) https://blog.csdn.net/chenlycly/article/details/125529931 C/C++基础与进阶(专栏文章,持续更新中...) https://blog.csdn.net/chenlycly/category_119

    2024年01月20日
    浏览(42)
  • QT-TableWidget多个行或者列合并效果

    使用代理,重新组合了行和列的合并,符合更多的实际应用场景,通过参数的方式,可以自定义设置想要的效果。 https://download.csdn.net/download/u013083044/86784759

    2024年02月15日
    浏览(36)
  • Qt之QPainter绘制多个矩形/圆形(含源码+注释)

    下图绘制的是矩形对象,但是将绘制矩形函数(drawRect)更改为绘制圆形(drawEllipse)即可绘制圆形。 绘制矩形需要自然要获取矩形数据,因此通过鼠标事件获取每个矩形的rect数据(鼠标按下为起始点,鼠标释放为结束点;每次移动时的当前位置做结束点,并实时刷新,实现

    2023年04月25日
    浏览(120)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包