我们在多线程,多进程编程中会遇到信号量,但这里的信号和我们之前理解的完全不同!
信号的理解:
信号(Signal)用于在特定事件发生时通知其他对象。特定的时间
可以是一个函数的被调用、一次鼠标的点击,或者是键盘的一次输入等等。
槽的理解:
就是对信号响应的函数。就是当信号发生,那么槽(函数)就开始运行了。
代码注意点:
信号:
1、自定义信号写在类的signals下面
2、只需要声明,不需要实现
3、返回值必须是void类型
4、可以有参数 可以重载
槽:
1、只能写在public slots:下面,但是新版本的Qt可以直接用
2、必须是全局 或者 public下面
3、必须要实现
4、可以有参数 可以重载
信号和槽的连接:
用 QObject::connect() 函数实现的,其基本格式是:
QObject::connect(sender, SIGNAL(signal()), receiver, SLOT(slot()));
参数 1、信号的发送者
参数 2、发送的信号
参数 3、信号的接收者
参数 4、处理函数(槽函数)
实战
1、创建两个对象,一个用来发送信号,一个用来当槽。
2、将信号和槽绑定(告诉程序,信号发生后要调用什么槽),红色的框是要补充的代码。
编译运行后,我们并没有调用boy2里面的agree()函数,但是会在输出界面看到打印信息。