目录
众所周知,Qt的信号与槽连接的函数是connect函数,而Qt又分为不同的版本;
变化比较大的是Qt4和Qt5这2个版本,到了Qt5之后,加了不少东西;
特别是connect函数在关联信号槽的时候,执行顺序总是受到很多使用者的关心。
信号与槽之间,可以进行1对1的关联,也可以1对多的关联,还可以进行多对1的关联;
1对1:
这个很好理解,一个信号只和一个槽关联,当发射信号之后,就去执行与之关联的槽了;
1对多:
这个就会有些复杂了,当一个信号和多个槽关联的时候,信号发射时,是如何触发槽执行的,到底是依次挨个有顺序的执行,还是无序的执行,在Qt的不同版本下有不同的表现:
Qt4:
在Qt4的版本里面,主要的执行顺序为:无序的,总体都会把所有与该信号关联的槽执行一遍,但是顺序是随机的,可以总结为一句话:随机都执行一遍;
Qt5:
在Qt5的版本里面,主要的执行顺序为:有序的,顺序取决于信号与槽在代码上的先后关联顺序,即:先关联的先执行,后关联的后执行。
多对1:
多对1的状态下,只有一个槽函数,但是有多个不同的信号来关联,当某个与之关联的信号被发射之后,都会执行一遍槽。