初级
加入我们想通过点击按钮,实现Qt中一个窗口的关闭。那么按钮就是事件的发送者,被点击就是信号,窗口就是事件接受者,被关闭就是需要执行的操作。其中被点击就可以理解为信号函数,关闭就是槽函数。
这个过程可以用伪代码
connect(信号的发送者,信号函数,信号的接受者,槽函数)
表示
信号和槽函数的优点:松散耦合,也就是说信号的发送端和接收端是没有关联的,他们之间通过connect
操作链接在一起。
可通过点击按钮,实现关闭窗口的操作。
总结:
连接函数connect(信号的发送者,信号,信号的接受者,处理信号的槽函数)
信号和槽的优点:松散耦合
中级
对于开发者而言,我们也可以自定义信号和槽函数。
自定义信号:需要在signals
关键字后去声明,但是不需要实现
自定义槽函数:在public
关键字后声明即可,但是必须要需要实现(个人理解:信号函数只需要发出即可。但是槽函数是有具体行为的,所以必须被实现)
自定义信号怎么发出:
emit 自定义信号函数()
的方式,可以发出信号
下面的例子就是,我们可以通过点击按钮,然后触发信号的发生。这时我们发现了,原来信号不仅可以和槽函数连接,也可以和信号连接。然后被连接的信号与某个槽函数连接,这样就实现了各种复杂的功能。
connect(quitbtn,&QPushButton::clicked,[=]()
{
//qDebug()<<"返回按钮被点击";
//告诉主场景 我返回了 主场景监听chooselevelscene的返回按钮
emit this->chooseSceneBack();
});