信号与槽

信号:就是一个返回值为void的函数(方法),signals为声明信号的关键字,就好像普通函数需要public、private等修饰一样

在.h文件中:

          signals: 

                void  sig();    此为申明sig()函数为一个信号,

发送信号需要在需要的地方 emit sig(); 此为发送信号,类似普通按钮的点击操作,

                    

槽:public slots:此为申明show()函数为一个槽

                        void show();

举例来说槽,比如一个按钮,点击它,它会发送一个信号,然后这个按钮的功能,或者说点击完按钮程序要执行的操作就是

    槽,槽也是一个函数,函数体就是要执行的操作

connect(*p,SIGNAL(sig()),*Q,SLOT(show()));固定写法,使信号与槽链接起来,实现按钮的功能

其中*p为触发信号的指针,比如按钮,sig()是*p所触发的信号,*Q是点击按钮后程序的执行者Q指针来执行show()函数(方法)

假设按钮为p,sig()函数就是点击事件。

就像,我按电灯的开关按钮,电灯发光。开关按钮就是p,按下的动作就是sig,电灯就是Q,发光的动作就是show();

 

扩展:信号与槽是独立存在的,所以,他们是可以一对多,多对一,一对一实现的,  比如:

              一个信号可以同时触发多个槽,例:一个开关可以同时关闭(开启)多个电灯

connect(*p,SIGNAL(sig()),*Q,SLOT(show1()));

connect(*p,SIGNAL(sig()),*Q,SLOT(show2()));

             一个槽可以由多个信号来触发,例:一个电灯可以由好多个开关来关闭(开启)

connect(*p,SIGNAL(sig1()),*Q,SLOT(show()));

connect(*p,SIGNAL(sig2()),*Q,SLOT(show()));

 

补充:

connect(p,&QPushButton::pressed, 
[=]()mutable     //=号表示参数,需要使用的外部全部数据,可以单独传;()中为信号的参数,mutable表示可以修改[]中的数据
 {
 qDebug()<<"sfdsa";//{}中为槽函数执行的内容,
});

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值