1、相关概念
这个在上位机的开发当中算是核心了,灵魂机制!
什么是信号:对象状态的变化或事件发生时发出的通知。
什么是槽:信号发出时调用的函数,用于处理信号。
信号和槽怎么连接:在python使用后connect函数将其关联,使得信号发出就调用槽函数。
但是这样看还是很抽象,那我用另一个语言的说法来解释一下。在java的swing页面开发当中也有相关的概念,只不过它叫“事件监听”。什么意思呢,就是关联按钮和对应的函数,函数启动的时候,程序就“监控”页面按键,要是一旦按键的状态发生改变,就马上调用和该按键绑定的函数,然后把结果返回页面。好,打住,估计没学过java的小伙伴又要脑袋晕晕了。不急,我更加细致的讲解一下,我举个栗子:
你在打王者荣耀或者英雄联盟,你方打野在打龙,然后再地图上打了一个集合的信号,这时候队友就屁颠屁颠的过去一起打龙,打完之后,你们又标记了对方的射手,然后集火把他秒了,最终一波了游戏。
从上述的例子当中,带入我们的信号和槽机制:
信号 :队友打的集合信号和标记信号
槽:队友执行的动作,配合打大龙和秒对方射手
连接:队友之间的羁绊绑定
执行结果返回:获得大龙、秒掉AD,获得胜利
收!我们回到正题!那我们需要在上位机开发的时候做些什么呢?
我们需要定义这个信号是谁发出的 谁要发出这个信号去执行事件。就像例子当中提到的,打野发出的是集合的信号,队友才会去打这个大龙。我们的页面布局的各个控件,都可以是发出信号的“打野”,这就是信号源。
其次,槽函数,需要我们编写的逻辑函数。如果已经看到信号了,我们要叫程序做什么,怎么做?这是关键。这是槽函数要做的事情,信号收到之后,要执行的事情,队友收到打野的信号,就知道要去打龙了。所以槽函数就是要执行的事情。
ok,上述的逻辑已经清晰,我们做一下总结,
信号和槽机制的执行顺序:
1、预先绑定好信号源和槽函数(connect函数)
2、信号源发出信号
3、执行槽函数
4、返回结果
5、事件结束
2、特性
该机制,可以出现一个信号源对多个槽函数,同时执行多个槽函数,返回多个结果,也可以多个信号源对接一个槽函数,也可以多对多。可以组成很丰富的关系网络,实现更复杂的场景。
3、结束语
信号和槽的简单理解,希望以这种方式,可以有变你们理解,下一章开始,进入功能的实现篇章!!(鞠躬)
(注:若有错误的地方,请指出,谢谢啦!)