Qt多个对象信号同一个槽,获得信号发送者

8 篇文章 0 订阅

qq聊天程序中,有用到多个聊天窗口对象发送消息,共同传给主窗口socket来发送。

可以在发送按钮下发射信号,

 

void chatDialog::on_m_sendBtn_clicked()
{
    emit sendMessageSignal(this,this->friendID);//发送聊天信息信号
}

主窗口接收,connect(chatDlg,SIGNAL(sendMessageSignal(chatDialog*,QString)),this,SLOT(sendChatMessage(chatDialog*,QString)));

void MainWindow::sendChatMessage(chatDialog* pchatDlg, QString friendID)
{
    chatDialog* pDlg = qobject_cast<chatDialog*>(QObject::sender());//获得发送信号的源对象
    qDebug()<<pchatDlg;//通过传参获得
    qDebug()<<pDlg;//通过函数获得
    qDebug()<<friendID;
}


这里要说明的是,要获得信号发送者的方法有两种,一种是通过传递参数chatDialog* ,

另一种是通过qobject_cast<chatDialog*>(QObject::sender())函数。

见上例源码:获得的指针是一样的,如下图:

特此记录。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值