【Qt】信号和槽

简介

Qt中使用信号和槽机制来完成对象之间的协同操作。信号和槽都是函数。可以将信号和槽关联起来,当信号发送消息,就会执行槽的函数。

在类中添加信号和槽函数,需要在头文件中使用slots关键字来修饰槽函数,使用signal来修饰信号函数。Qt4中必须使用,Qt5使用新的connect语法时可不用,但是为了与一般函数作区分,建议使用。在头文件在定义好函数,就可以在源文件中添加函数源码。

在定义槽函数时,Qt Creator提供了一个快速添加定义的方法:在头文件中点击槽函数,按下Alt+Enter(也可以右击,选择Refactor菜单项),在弹出窗口中选择“在xxx.cpp添加定义”,便会跳转到源文件,并且自动创建槽函数的定义。这种方式也适用于现在源文件中添加定义,然后在头文件中添加声明。

关联方式

  • 手动关联:使用connect()函数将信号和槽关联(只有直接或间接继承了QObject类,才能使用connect()函数将信号和槽关联),4个参数分别是发射信号的对象、发射的信号、接收信号的对象、要执行的槽函数。
  • 自动关联:将关联函数整合到槽函数的命名中,将槽函数命名为“on_发射信号的部件_信号名”,如on_showChildButton_clicked()。这样就可以去掉使用connect()关联函数,会自动关联。

手动关联和自动关联的切换,Qt Creator提供了快捷设置的方法。选择槽函数右击,选择Refactor->Rename Symbol Under Cursor(快捷键Ctrl+Shift+R),在出现的替换栏中输入自动关联的命名,点击Replace,源文件和头文件中相应的函数名都更改了。

自动关联的形式更便捷,使用Qt设计器直接生成的槽函数就是使用这种方式。但是对于不是使用Qt设计器添加的部件,就要在调用setupUI()函数前面定义该部件,使用setObjectName()函数指定部件的对象名,这样才能自动关联。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值