信号与槽

信号:就是一个返回值为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()));

猜你喜欢

转载自blog.csdn.net/qq_41672557/article/details/80201673