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

653 篇文章 12 订阅 ¥119.90 ¥299.90
在Qt编程中,可以通过qobject_cast和sender()函数来获取发送信号的对象。首先通过connect绑定信号槽,然后在槽函数内部,利用qobject_cast进行类型安全转换,结合sender()获取发送信号的对象。需要注意的是,这种方式仅适用于connect的信号源对象,并且qobject_cast要求目标类型继承自QObject。
摘要由CSDN通过智能技术生成

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

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

QLineEdit *lineEdit = new QLineEdit();
lineEdit->setObjectName("lineEdit");
connect(lineEdit,&QLineEdit::textChanged,this,&MainWindow::slot_lineEditGroup_textChange);

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

void QWidget::slot_lineEditGroup_textChange(QString str)
{    
    QLineEdit *lineEdit=qobject_cast<QLineEdit *>(sender());
    qDebug()<<"lineEdit->objectName()=="<<lineEdit->objectName();
}

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

QLineEdit *lineEdit = new QLineEdit();
lineEdit->setObjectName("lineEdit");
connect(lineEdit,&QLineEdit::textChanged,this,&MainWindow::slot_lineEditGroup_textChange);
 
void QWidget::slot_lineEditGroup_textChange(QString str)
{    
    QLineEdit *lineEdit=qobject_cast<QLineEdit *>(sender());
    qDebug()<<"lineEdit->objectName()=="<<lineEdit->objectName();
}

在这里插入图片描述
1.4注意点
a1 这种获取对象的方式只能获取被connect绑定的对象的类型。

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值