欢迎来到军工软件开发人才培养基地——学到牛牛

信号和槽的关联方式

时间:2024-05-06 07:01:10 来源:学到牛牛

在QT里面信号(signal)和槽(slot)是关键所在,当对象的状态发生改变的时候,就会发射信号出去,而且对象只负责发送信号,这样就做到了真正的信息封装。槽函数则是用来接收信号,但是一个信号的签名必须和接收槽的签名相匹配。这里需要注意几点:一个信号可以连接多个槽;多个信号可以连接同一个槽;信号与信号之间也可以相互连接。

而信号和槽之间的关联方式则有一下几种:

1,Signal、slot的Edit方式;

在信号和槽的编辑区点击“加号”创建新的信号和槽的连接。

然后选择我们信号的发送者、信号类型、接收者以及槽,通过手动的方式将信号和槽之间连接起来。

2,通过快捷键F4、F3连接;

先通过快捷键F4或点击工具栏上的按钮进入信号和槽的编辑模式,

然后选中信号的发送者,并指向信号的接收者,

在弹出的窗口里面选择信号类型和接收的槽,

完成连接,然后快捷键F3退出编辑模式。

3,转到槽;

选中信号发送者,点击鼠标右键选择转到槽的方式

跳转到源文件界面之后,在槽函数里面写入代码,使信号和槽关联起来,

4,自定义信号和槽

首先在头文件里面自定槽函数,然后跳转到源文件里面,编辑槽函数;

在构造函数里面添加connect将信号和槽关联起来;

在connect这个函数里面一共包括了五种参数,我们一般使用的都是前四种参数,分别是信号的发送者,信号类型,信号的接收者以及槽函数。而第五个参数则是关联的类型,一般不填,为默认值。

在自定义信号和槽里面还有一种定义方式是基于函数指针的,构造函数如下;

其他的操作与之前相同。

信号和槽的关联应该注意以下几点:

1.要注意信号和槽函数的参数数量相同时,参数类型要一致;

2.要注意当信号和槽函数的参数数量不一致的时候,只能是信号的参数数量多于槽函数的参数数量;

3.要注意在不进行参数传递的时候,信号和槽绑定时也要求信号的参数数量多于槽函数的参数数量,也就是一个带参的信号去绑定无参的槽函数。