信号和槽机制是QT编程的基础,可将互不了解的对象绑定在一起。
槽和普通的C++成员函数几乎一样,可以是虚函数,可以被重载,可以是公开的,私有的,受保护的,也可以被其它C++成员函数直接调用,且参数类型可以是任意类型,唯一不同的是槽可以和信号连接在一起,一旦发送信号就会自动调用相应槽。
语法如下:
connect(sender,SIGNAL(singnal),receiver,SLOT(slot));
sender和receiver是指向QObject的指针,signal和slot是不带参数的函数名。实际上SIGNAL()宏和SLOT()宏会把他们的参数转换成响应的字符串 需要注意的几点是:
1.一个信号可以连接多个槽,发送信号时槽调用顺序不确定。
2.多个信号可以连接一个槽,故无论发送哪个信号,都会调用相应的槽。
3.连接可以被移除
移除连接需要使用到disconnect(),这种情况很少用,因为删除对象时会自动移除和这个对象相关的所有连接。