1 先理解一下信号与槽
我们通常会在改变一个组件的同时,通知另一个组件做出响应。改变一个组件的时候,就会发送一个信号,写好的槽会对这个信号进行匹配,做出相应的相应。
槽和信号都是函数,具有类成员函数相同的属性。唯一不同的就是槽可以与信号进行连接。这种通信方式是安全的,因为信号的函数签名必须与信号的函数签名匹配上。实际中,信号函数的参数可以比槽的参数多,因为槽可以自动忽略无用的参数。
2 connect 函数就是用来将信号与槽之间的联系建立起来的
2.1 格式:
QObject::connect( 发送方, signal(..), 接收方, slot(...))
源码出connect函数是这样定义的connect(sender,SIGNAL(signal()),receiver,SLOT(slot()));
SIGNAL,SLOT宏的作用是将信号和槽函数转化为字符串并添加标识符。
2.2 在使用connect函数需要注意到的问题
(1) 信号的发送者必须是QObject的派生对象。
(2) 槽函数所在类的定义中必须添加宏Q_OBJECT
(3) 如果槽函数是on_控件命_信号名,那么不需要主动调用connect进行连接
2.3 关于connect函数的实现
代码与注释如下
bool QObject::connect(const QObject *sender, const char *signal,
const QObject *receiver, const char *method,
Qt::ConnectionTy