我的专属QQ 功能篇(二)

接上篇

 

✿好友列表

我的专属QQ 功能篇(二)

 

 

相关初始化,  UDP

[cpp]  view plain copy
  1. void panel::init()  
  2. {  
  3.     udpSocket = new QUdpSocket(this);  
  4.     udpSocket->bind(6666);  
  5.     QString msgType = "MSG_CLIENT_NEW_CONN";  
  6.     QByteArray block;  
  7.     QDataStream out(&block, QIODevice::WriteOnly);  
  8.     out.setVersion(QDataStream::Qt_4_6);  
  9.     out << (quint16)0 << msgType << usrname;  
  10.     out.device()->seek(0);  
  11.     udpSocket->writeDatagram(block.data(), block.size(), QHostAddress(ip), (quint16)port.toUInt()+1);  
  12.     connect(this->udpSocket, SIGNAL(readyRead()), this, SLOT(recvMsg()));  
  13. }  

 

列表显示

[cpp]  view plain copy
  1. void panel::on_itemDoubleClicked(QListWidgetItem* item)  
  2. {  
  3.     QString nameStr = ui->usrlistWidget->currentItem()->text();  
  4.   
  5.     nameStr.replace("\n","");  
  6.     chatform *c = chatformHash.value(nameStr);  
  7.     if(c == 0)  
  8.     {  
  9.         c = new chatform(this->usrname,this->ip,this->port, udpSocket);  
  10.         c->setWindowTitle("chatting with " + nameStr + ".");  
  11.         chatformHash.insert(nameStr,c);//??  
  12.   
  13.     }  
  14.     c->setWindowFlags(Qt::FramelessWindowHint);  
  15.     c->setAttribute(Qt::WA_TranslucentBackground);  
  16.   
  17.     c->show();  
  18. }  


 

✿聊天窗口

我的专属QQ 功能篇(二)

我的专属QQ 功能篇(二)

聊天信息的显示处理

[cpp]  view plain copy
  1. void chatform::displayText(QString nickname, QString usrname, QString text)  
  2. {  
  3.     QListWidgetItem *displayItem = new QListWidgetItem(nickname + "(" + usrname + ") :\n" + text + "\n");  
  4.     ui->listWidget->addItem(displayItem);  
  5. }  


发送处理

[cpp]  view plain copy
  1. void chatform::on_sendButton()  
  2. {  
  3.     QString sendText = ui->textEdit->toPlainText();  
  4.        if(!sendText.isEmpty())  
  5.        {  
  6.            QString windowTitle = this->windowTitle().replace("].","");  
  7.            QString toId = QString(windowTitle.split("[").at(1));  
  8.            QString msgType = "MSG_CLIENT_CHAT";  
  9.            QByteArray block;  
  10.            QDataStream out(&block, QIODevice::WriteOnly);  
  11.            out.setVersion(QDataStream::Qt_4_6);  
  12.            out << (quint16)0 << msgType << usrname << toId << sendText;  
  13.            out.device()->seek(0);  
  14.   
  15.            out << (quint16)(block.size() - sizeof(quint16));  
  16.   
  17.            udpSocket->writeDatagram(block.data(), block.size(), QHostAddress(serverIp), (quint16)serverPort.toUInt()+1);  
  18.            ui->listWidget->addItem("I say :\n" + sendText + "\n");  
  19.        }  
  20.        ui->textEdit->clear();  
  21. }  

你可能感兴趣的:(我的专属QQ 功能篇(二))