在QT里面信号(signal)和槽(slot)是关键所在,当对象的状态发生改变的时候,就会发射信号出去,而且对象只负责发送信号,这样就做到了真正的信息封装。槽函数则是用来接收信号,但是一个信号的签名必须和接收槽的签名相匹配。这里需要注意几点:一个信号可以连接多个槽;多个信号可以连接同一个槽;信号与信号之间也可以相互连接。
而信号和槽之间的关联方式则有一下几种:
1,Signal、slot的Edit方式;
在信号和槽的编辑区点击“加号”创建新的信号和槽的连接。
然后选择我们信号的发送者、信号类型、接收者以及槽,通过手动的方式将信号和槽之间连接起来。
2,通过快捷键F4、F3连接;
先通过快捷键F4或点击工具栏上的按钮进入信号和槽的编辑模式,
然后选中信号的发送者,并指向信号的接收者,
在弹出的窗口里面选择信号类型和接收的槽,
完成连接,然后快捷键F3退出编辑模式。
3,转到槽;
选中信号发送者,点击鼠标右键选择转到槽的方式
跳转到源文件界面之后,在槽函数里面写入代码,使信号和槽关联起来,
4,自定义信号和槽
首先在头文件里面自定槽函数,然后跳转到源文件里面,编辑槽函数;
在构造函数里面添加connect将信号和槽关联起来;
在connect这个函数里面一共包括了五种参数,我们一般使用的都是前四种参数,分别是信号的发送者,信号类型,信号的接收者以及槽函数。而第五个参数则是关联的类型,一般不填,为默认值。
在自定义信号和槽里面还有一种定义方式是基于函数指针的,构造函数如下;
其他的操作与之前相同。
信号和槽的关联应该注意以下几点:
1.要注意信号和槽函数的参数数量相同时,参数类型要一致;
2.要注意当信号和槽函数的参数数量不一致的时候,只能是信号的参数数量多于槽函数的参数数量;
3.要注意在不进行参数传递的时候,信号和槽绑定时也要求信号的参数数量多于槽函数的参数数量,也就是一个带参的信号去绑定无参的槽函数。