概述
在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();。然后再通过安全转换函数转化为对应类型。
最后
以上就是过时煎饼为你收集整理的Qt中通过信号槽函数获取发送信号的对象(qobject_cast、sender)的全部内容,希望文章能够帮你解决Qt中通过信号槽函数获取发送信号的对象(qobject_cast、sender)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复