Qt信号的槽

来源:互联网 发布:淘宝生意参谋手机版 编辑:程序博客网 时间:2024/05/18 08:59

槽和信号是是将不同的对象绑定在一起

槽是一个函数(可以被其他的函数调用),可以将槽和信号绑定在一起,每当发射这个信号是就会调用这个槽
connect格式
connect(slider,SIGNAL(signal),receiver,SLOT(slot));

sender 和receiver是指向QObject的指针,signal和slot是不带参数的函数名(SIGNAL()宏和 SLOT()宏 会把他们参数转化为字符串)

  1. 一个信号可以连接多槽
     
  connect(slider,SIGNAL(valueChanged(int)),                receiver,SLOT(setValue(int)));                  connect(slider,SIGNAL(valueChanged(int)),        receiver,SLOT(updateStatusBarIndicator(int)));
当发射这个信号时 ,会以不确定的顺序调用这些槽

 
2. 多个槽可以连接同一个信号

connect(slider,SIGNAL(overflow()),                receiver,SLOT(handleMathError());                  connect(slider,SIGNAL(divisionByZero),        receiver,SLOT(handleMathError());
无论发射发射那个信号都可以调用后同一个槽

3.一个信号可以与另一个信号连接

connect(slider,SIGNAL(textChanged(const QString &)),   receiver,SIGNAL(updaterRecord(const QString &)));

当发射第一个信号时也会发射第二个信号

4.连接可以被移除

*

disconnect(lcd,SIGNAL(overflow()),                   this,SLOT(handleMathError()));

这种情况较少用到,因为当删除对象时,Qt会移除这个对象相关的所有的连接

要把信号成功连接到槽(或者另外连接到一个信号),信号和槽必须有相同的顺序和相同的类型
例外情况时:信号的参数比槽的参数多,则会忽略信号多余的参数。

如果参数不匹配,或者信号和槽不存在,则会发出警告,信号和槽带参数名字,也会警告。

原创粉丝点击