我的专属QQ 功能篇(二)

接上篇

✿好友列表

相关初始化, UDP

void panel::init() { udpSocket = new QUdpSocket(this); udpSocket->bind(6666); QString msgType = "MSG_CLIENT_NEW_CONN"; QByteArray block; QDataStream out(&block, QIODevice::WriteOnly); out.setVersion(QDataStream::Qt_4_6); out << (quint16)0 << msgType << usrname; out.device()->seek(0); udpSocket->writeDatagram(block.data(), block.size(), QHostAddress(ip), (quint16)port.toUInt()+1); connect(this->udpSocket, SIGNAL(readyRead()), this, SLOT(recvMsg())); }

列表显示

void panel::on_itemDoubleClicked(QListWidgetItem* item) { QString nameStr = ui->usrlistWidget->currentItem()->text(); nameStr.replace("\n",""); chatform *c = chatformHash.value(nameStr); if(c == 0) { c = new chatform(this->usrname,this->ip,this->port, udpSocket); c->setWindowTitle("chatting with " + nameStr + "."); chatformHash.insert(nameStr,c);//?? } c->setWindowFlags(Qt::FramelessWindowHint); c->setAttribute(Qt::WA_TranslucentBackground); c->show(); }


✿聊天窗口

聊天信息的显示处理

void chatform::displayText(QString nickname, QString usrname, QString text) { QListWidgetItem *displayItem = new QListWidgetItem(nickname + "(" + usrname + ") :\n" + text + "\n"); ui->listWidget->addItem(displayItem); }


发送处理

void chatform::on_sendButton() { QString sendText = ui->textEdit->toPlainText(); if(!sendText.isEmpty()) { QString windowTitle = this->windowTitle().replace("].",""); QString toId = QString(windowTitle.split("[").at(1)); QString msgType = "MSG_CLIENT_CHAT"; QByteArray block; QDataStream out(&block, QIODevice::WriteOnly); out.setVersion(QDataStream::Qt_4_6); out << (quint16)0 << msgType << usrname << toId << sendText; out.device()->seek(0); out << (quint16)(block.size() - sizeof(quint16)); udpSocket->writeDatagram(block.data(), block.size(), QHostAddress(serverIp), (quint16)serverPort.toUInt()+1); ui->listWidget->addItem("I say :\n" + sendText + "\n"); } ui->textEdit->clear(); }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值