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())函数。
见上例源码:获得的指针是一样的,如下图:
特此记录。

本文介绍了一个QQ聊天程序的设计方案,其中多个聊天窗口对象通过信号槽机制将消息发送给主窗口的socket进行统一处理。文章详细展示了如何使用Qt的信号与槽机制实现这一功能,并提供了具体的代码示例。
624

被折叠的 条评论
为什么被折叠?



