槽函数获取sender_Qt中通过信号槽函数获取发送信号的对象(qobject_cast、sender)...

在Qt中,可以通过信号槽函数获取发送者对象,主要有两个核心函数qobject_cast()和sender()。用法如下

1.1先通过connect绑定信号槽,代码如下:

QLineEdit *lineEdit = new QLineEdit();

lineEdit->setObjectName("lineEdit");

connect(lineEdit,&QLineEdit::textChanged,this,&slot_lineEditGroup_textChange);

1.2在槽函数中,通过qobject_cast<>()和sender()函数获取发送者对象,代码如下

void QWidget::slot_lineEditGroup_textChange(QString str)

{

QLineEdit *lineEdit=qobject_cast(sender());

qDebug()<objectName()=="<objectName();

}

1.3完整代码和输入结果如下所示:

QLineEdit *lineEdit = new QLineEdit();

lineEdit->setObjectName("lineEdit");

connect(lineEdit,&QLineEdit::textChanged,this,&slot_lineEditGroup_textChange);

void QWidget::slot_lineEditGroup_textChange(QString str)

{

QLineEdit *lineEdit=qobject_cast(sender());

qDebug()<objectName()=="<objectName();

}

1.4注意点

a1 这种获取对象的方式只能获取被connect绑定的对象的类型。

a2 qobject_cast():是安全转换函数,安全转换小括号()的类型为类型T。转换的类型T必须是继承于QObject的类,否则转换不成功。

a3 sender():当通过信号槽连接槽函数时,用sender()函数可以获取信号发送者对象,即invoke对象,一般在槽函数调用sender()函数获取发送对象,即QObject *object=sender();。然后再通过安全转换函数转化为对应类型。

参考内容:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值