Qt
1. 信号和槽的概念
信号是什么:
在Linux中,我们知道信号是一种异步的事件通知机制,用于通知进程某个事件已经发生。它是进程间通信的一种方式。
回顾之前的信号的三个特点,信号由谁产生,信号的类型,信号所对应的触发事件。我们可以简单的理解:Qt中的信号其实和linux的类似,本质就是让用户进行交互,触发对应的交互事件。
所以在Qt中,信号的详细解释:就是由于用户对窗口或控件进行了某些操作,导致窗口或控件产生了某个特定事件,这时 Qt 对应的窗口类会发出某个信号,以此对用户的操作做出反应。因此,信号的本质就是事件。
‘’ 点击按钮、鼠标移动、鼠标按下、鼠标释放以及键盘输入… ‘’ 这些都是事件,Qt怎么样将这些信号事件通过不同的形式传递给使用者?通过函数来表示信号。
槽是什么:
槽(Slot)就是对信号响应的函数。 槽就是一个函数,与一般的 C++ 函数是一样的,可以定义在类的任何位置(public、protected 或 private),可以具有任何参数,可以被重载,也可以被直接调用(但是不能有默认参数)。槽函数与一般的函数不同的是:槽函数可以与一个信号关联,当信号被发射时,关联的槽函数被自动执行。
所以,在 Qt 中,用户和控件的每次交互过程称为一个事件,每个事件都会发出一个信号。Qt 中的所有控件都具有接收信号的能力,且一个控件可接收多个不同信号。对于接收到的每个信号,控件会做出相应响应动作。在 Qt 中,对信号做出的响应动作称之为槽。信号和槽是 Qt 特有的消息传输机制,能将相互独立的控件关联起来,通过信号和槽机制可关联起来,实现不同的效果。
信号和槽的联系和区别: