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

    文章

    2640

    浏览量

    75390
  • 函数
    +关注

    关注

    3

    文章

    3882

    浏览量

    61310
  • Designer
    +关注

    关注

    0

    文章

    117

    浏览量

    35477
  • 代码
    +关注

    关注

    30

    文章

    4556

    浏览量

    66784
  • Qt
    Qt
    +关注

    关注

    1

    文章

    299

    浏览量

    37340

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

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

收藏 人收藏

    评论

    相关推荐

    一键还原_一键还原精灵等系统还原软件集合

    本帖最后由 清晨的故事 于 2011-3-12 18:21 编辑   1、【系统备份】 MGhost一键还原 (系统还原备份)2.1 免安装版  2、【理科工具】 氧化碳还原氧化铜仿真
    发表于 03-12 18:20

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

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

    一键还原小工具

    老毛桃一键还原图文教程V2.0老毛桃一键 V2.0.12.5更新说明: 1、细节完善及处理已知的问题2、更新GRUB模块,提高兼容性3、高级项“搜索”开放自定后缀,可搜索任何后缀的GHO还原4、
    发表于 05-14 16:14

    系统一键还原工具

    老毛桃一键还原图文教程V2.0老毛桃一键 V2.0.12.5更新说明: 1、细节完善及处理已知的问题2、更新GRUB模块,提高兼容性3、高级项“搜索”开放自定后缀,可搜索任何后缀的GHO还原4、
    发表于 05-27 12:46

    一键还原系统

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

    一键还原系统工具2.0

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

    一键还原系统工具

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

    一键还原V2.0

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

    Qt之信号与机制()

    . 简介就我个人来理解,信号机制与Windows下消息机制类似,消息机制是基于回调函数,Qt中用信号与来代替函数指针,使程序更安全简洁。信号和
    发表于 11-07 15:06

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

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

    proteus汉化软件 一键汉化

    ` 本帖最后由 电子工程师2014 于 2016-8-21 18:34 编辑 proteus汉化软件一键汉化选好安装路径一键汉化`
    发表于 08-21 13:51

    什么是一键起飞?

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

    DFM一键分析值得使用

    `近来发现个神器,款DFM分析软件,就用该软件做了块板,导入GERBR文件后,执行一键DFM,检查时没发现的错误下给指出来了,心里踏实多了,以后再也不用发板前做反反复复的检查工作
    发表于 05-20 15:11

    Stm32怎么一键下载

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

    stm32怎么一键下载来着

    一键下载的原理是什么?一键下载的操作流程是怎样的?stm32怎么一键下载来着?
    发表于 10-25 07:28