0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Qt“懒人写法”之一键破“槽”

嵌入式小生 来源:嵌入式小生 2023-02-09 17:23 次阅读

在《Qt信号和槽函数机制,此篇足矣》一文中已经描述了Qt的信号和槽函数机制,在实际项目开发中,一般会使用QObject下提供的接口函数创建信号和槽函数之间的关联:

79eca55e-a78b-11ed-bfe3-dac502259ad0.png

但是在Qt Designer中提供了一个快速关联信号和槽函数的方式:使用『转到槽...』对话框创建选定控件之间的信号和槽函数关联。

7a1a4216-a78b-11ed-bfe3-dac502259ad0.png

在点击『转到槽...』选项后,会弹出一个编辑框,例如此处以QPushButton按钮控件为例,则会弹出如下的对话框:

7a394d82-a78b-11ed-bfe3-dac502259ad0.png

从上图可知,首先QObject和QWidget下的信号是公共的,QAbstractButton是按钮类独有的,Qt使用该类抽象出了按钮的一些公共操作,并已定义好具体的信号。当选中具体信号后,点击“确定”按钮,QtCreator会自动生成一个槽函数,例如,如果选择了clicked()这个信号,则会在代码中生成如下代码,在头文件生成代码如下:

privateslots:
voidon_pushButton_clicked();

在源文件中生成代码如下:

7a4c29b6-a78b-11ed-bfe3-dac502259ad0.png

本质上,QtCreator生成代码的成员函数的命名是能够被QMetaObject的自动连接工具识别的,在构建过程中,在uic生成的用于描述界面的C++文件中,会出现以下代码:

7a670d8a-a78b-11ed-bfe3-dac502259ad0.png

因此,通过connectSlotByName()就将名称和槽函数进行了关联,该函数会递归搜索给定对象的所有子对象,并将它们的匹配信号连接到遵循特定格式命名的槽函数,格式如下:

voidon__()

:对象名称。

:信号名称。

:传入的参数

在实际使用过程中,只需要声明和实现一个槽函数,其名称遵循标准约定,就可以将一个控件对象的信号和具体槽函数关联,当然这个过程由QtCreator自动完成。

Qt提供的信号和槽函数的自动连接机制,为开发小部件提供了标准命名约定和显式接口。通过提供实现给定界面的源代码,在设计用户界面时无需再编写代码就可以检查设计是否真正有效了。

小生总结

基于QtCreator,提供的信号和槽函数的自动连接机制在实际开发中,经常会被使用到,特别是在需要快速验证功能和需求的时候,这种方式比使用connect()关联信号和槽函数的开发效率要快很多。但是,如果界面中同类型控件较多的情况下,就需要注释清楚,不然不好区分具体控件下的功能。

在实际项目开发中,对于自定义的信号,习惯使用connect()进行槽函数的关联。对于具体界面中控件,如果是Qt提供的标准控件,则可以使用信号和槽函数的自动连接机制,以加快开发效率。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 信号
    +关注

    关注

    11

    文章

    2790

    浏览量

    76736
  • 函数
    +关注

    关注

    3

    文章

    4329

    浏览量

    62576
  • Designer
    +关注

    关注

    0

    文章

    122

    浏览量

    35785
  • 代码
    +关注

    关注

    30

    文章

    4780

    浏览量

    68539
  • Qt
    Qt
    +关注

    关注

    1

    文章

    302

    浏览量

    37899

原文标题:Qt “懒人写法”之一键破“槽”

文章出处:【微信号:嵌入式小生,微信公众号:嵌入式小生】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    西门子SMART200PLC一键启停的几种写法

    在生产中,由于安装环境,成本控制,操作便利等因素,会用到一键启停的控制,比如电机控制,阀门控制等等,今天我给大家聊聊常见的几种写法,为了直观通俗,我们用LAD(梯形图)来写。
    发表于 07-14 09:21 3228次阅读
    西门子SMART200PLC<b class='flag-5'>一键</b>启停的几种<b class='flag-5'>写法</b>

    方便快捷:PADS的一键快捷功能:一键灌铜,一键检查DRC

    倾情奉献给大家,非常实用的快捷功能一键灌铜: [hide] [/hide]一键检查连通性:[hide][/hide]一键检查安全间距::[hide] [/hide]一键清除Error标
    发表于 11-07 15:06

    一键还原系统

    老毛桃一键 V2.0.12.5更新说明: 1、细节完善及处理已知的问题2、更新GRUB模块,提高兼容性3、高级项“搜索”开放自定后缀,可搜索任何后缀的GHO还原4、些函数位置及变量调整5、完善1
    发表于 06-18 20:41

    电信一键免流量软件电信一键免流软件app

    电信用户一键免流量上网软件款电信免费流量软件一键免流量app电信版加QQ1814806072电信2G3G4G都支持,支持免流开热点给电脑使用或者其他的设备使用,真正强大的免流,超稳定完全不跳点
    发表于 07-19 10:37

    什么是一键起飞?

    原子家的minifly,有谁搞懂了一键起飞呀?跪求
    发表于 07-11 04:35

    Stm32怎么一键下载

    文章目录前言一键下载一键下载原理硬件原理图跳帽与启动存储映射串口下载程序由来一键下载流程通过 USB 控制机器复位握手解读前言最近在又要折腾 stm32 了,所以翻出了脚落里的开发板,先复习下
    发表于 08-05 08:13

    一键ghost11使用教程

    一键ghost11使用教程
    发表于 01-08 09:25 60次下载
    <b class='flag-5'>一键</b>ghost11使用教程

    VBS脚本实例之一键升级哨位台核心板和底板程序脚本的资料说明

    本文档的主要内容详细介绍的是VBS脚本实例之一键升级哨位台核心板和底板程序脚本的资料说明免费下载。
    发表于 05-07 18:22 0次下载
    VBS脚本实例<b class='flag-5'>之一键</b>升级哨位台核心板和底板程序脚本的资料说明

    Stm32 一键下载电路详解

    文章目录前言一键下载一键下载原理硬件原理图跳帽与启动存储映射串口下载程序由来一键下载流程通过 USB 控制机器复位握手解读前言最近在又要折腾 stm32 了,所以翻出了脚落里的开发板,先复习下
    发表于 11-24 18:06 9次下载
    Stm32 <b class='flag-5'>一键</b>下载电路详解

    文详解Qt信号和函数机制

    信号和用于多个对象之间的通信。信号和机制是Qt的核心特性,也是Qt与其他框架最大的不同之处。Qt的元对象系统是信号和
    的头像 发表于 02-07 09:14 3260次阅读

    浅淡西门子smart200PLC一键启停的几种写法

    在生产中,由于安装环境,成本控制,操作便利等因素,会用到一键启停的控制,比如电机控制,阀门控制等等,今天给大家聊聊常见的几种写法,为了直观通俗,用LAD(梯形图)来写。
    的头像 发表于 02-21 16:38 2809次阅读

    smart200PLC一键启停的常用写法

    (复位/置位一键启停) 程序解说: 按下按钮M10.4,它接通第个扫描周期,Q0.2线圈得电置位为 1;再次按下M10.4,Q0.2线圈复位为0;.5作为一键启停的辅助点, 和Q0.2线圈状态
    发表于 10-08 11:53 2398次阅读
    smart200PLC<b class='flag-5'>一键</b>启停的常用<b class='flag-5'>写法</b>

    一键开关电路的好处?生活中的一键开关电路有哪些?

    一键开关电路的好处?生活中的一键开关电路有哪些? 一键开关电路是指个电路设计,可以用个按钮或开关来控制多个电器或灯具的开关。
    的头像 发表于 10-22 15:18 2220次阅读

    变电站一键顺控系统和开关柜一键顺控有区别吗?

    变电站一键顺控系统和开关柜一键顺控威廉希尔官方网站 虽然都涉及到“一键顺控”的概念,但它们在应用范围和具体实现上有所不同,因此变电站一键顺控系统和开关柜一键
    的头像 发表于 07-31 13:34 563次阅读
    变电站<b class='flag-5'>一键</b>顺控系统和开关柜<b class='flag-5'>一键</b>顺控有区别吗?

    一键断电开关的种类有哪些

    一键断电开关的种类主要可以从其功能和实现方式上进行分类。以下是些常见的一键断电开关种类: 1. 继电器式一键断电开关 定义 :这种开关通过继电器或接触器控制电路的通断,实现
    的头像 发表于 09-13 16:45 974次阅读