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

来源:互联网 发布:网络竞彩诈骗 编辑:程序博客网 时间:2024/06/04 00:21

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())函数。

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

特此记录。