QT学习随笔---信号槽

QT作为C++的一个类库。

槽函数,槽函数与普通的C++类成员函数区别不大,可以virtual,可以被继承、重写等,也具有public、protect、private属性。可以被其它类调用,参数类型任意。

 

connect()语句原型:

bool QObject::connect(const QObject* sender,const char * signal,const QObject * receiver,const char * member)

参数:发送者,信号,接收者,槽函数。

当指定信号signal时必须使用宏SIGNAL(),当指定槽函数时必须使用宏SLOT(),如果发送者与连接者属于同一个对象时,那么在connect调用中接受者参数可以忽略。

SIGNAL和SLOT宏,用于把参数转换成字符串。

 

信号槽还可以有扩展用法。

1、一个信号可以对应多个槽函数

connect(slider, SIGNAL(valueChanged(int)),spinBox, SLOT(setValue(int)));
connect(slider, SIGNAL(valueChanged(int)),this, SLOT(updateStatusBarIndicator(int)));

类似上面的情况,槽函数会一个接一个的被调用,但是调用顺序不一定。

 

2、多个信号对应一个槽函数。

3、一个信号连接到另外一个信号。

connect(lineEdit, SIGNAL(textChanged(const QString &)),this, SIGNAL(updateRecord(const QString&)));
这是说,当第一个信号发出时,第二个信号被发出。除此之外,这种信号-信号的形式和信号-槽的形式没有什么区别。

大同小异,目测也可以一个信号对应多个信号,类似上面的第一种情况。

 

 

注意:

为了正确的连接信号槽,信号和槽的参数个数、类型以及出现的顺序都必须相同。

也存在特殊情况,可以信号的参数个数多于槽函数的参数个数。多出的参数就被自动忽略掉了。

但是信号的参数个数不能少于槽函数参数个数。

在自写的信号槽中,如果存在循环链接的情况,需要在槽函数中加入判断,防止死循环。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值