分类: LINUX
2009-10-04 00:58:06
信号
一个特定的标识,当内部发生某些事件或状态改变时能够被“发射”
槽
槽和普通的C++类的成员函数几乎是一样的
唯一不同的是:槽可以和信号连接在一起,当发射这个信号的时候,就会自动调用这个槽
作用
对象之间通信的高级接口
事件出现时,通过发送信号将与之关联的槽函数激活,即执行槽函数代码
程序总结:
信号和槽的连接基本实现语句:
QObject::connect(a,SIGNAL(a_signal(int)),
b,SLOT(b_slot(int)))
Connect是静态成员函数,需要加QObject::
如果是QObject子类来调用则不用
连接的两个对象需要在连接前已经存在,否则会报错
连接本身不会导致信号的发射和槽的执行
a_signal和b_slot中只能有参数类型
3信号和槽(连接规则)
1.一个信号可以连接多个槽
2.多个信号可以连接一个槽
3.一个信号可以与另外一个信号相连接
4.信号和槽(参数匹配)
要把信号成功连接到槽或另一个信号,它们的参数必须具有相同的顺序和类型
注:参数匹配是逐字母检查,所以类型必须严格一致。如string和const string就不匹配
5.例外:信号参数比槽多,多余参数被忽略
如果类型不匹配,或信号和槽不存在,编译时不会报错,运行时会有警告