void exchange::usrEnter(QString username) { sta = 0; if(!sta){ //追加聊天记录 ui->msgBrowser->setTextColor(Qt::gray); //ui->msgBrowser->append( QString("%1 上线了").arg(username)); //把自身信息广播出去 sndMsg(UsrEnter); sta = 1; } }/
时间: 2024-03-30 19:38:08 浏览: 22
这是一个函数,用于处理用户加入聊天室的消息。函数首先将变量 sta 赋值为 0,然后判断 sta 的值是否为 0。如果 sta 为 0,则将聊天记录窗口的字体颜色设置为灰色,并在聊天记录窗口中追加一条消息,表示该用户已上线。接着,函数使用 sndMsg() 函数向其他用户广播该用户加入聊天室的消息。最后,将变量 sta 的值赋为 1。
相关问题
void exchange::ReceiveMessage() { //拿到数据报文 //获取长度 qint64 size = udpSocket->pendingDatagramSize(); QByteArray array = QByteArray(size,0); udpSocket->readDatagram(array.data(),size); //解析数据 //第一段 类型 第二段 用户名 第三段 内容 QDataStream stream (&array,QIODevice::ReadOnly); int msgType; //读取到类型 QString usrName; QString msg; //获取当前时间 QString time = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"); stream >> msgType; switch (msgType) { case Msg: //普通聊天 stream >> usrName >> msg; //追加聊天记录 ui->msgBrowser->setTextColor(Qt::blue); ui->msgBrowser->append("[" + usrName + "]" + time); ui->msgBrowser->append(msg); break; case UsrEnter: stream >> usrName; usrEnter(usrName); break; case UsrLeft: stream >> usrName; usrLeft(usrName,time); break; default: break;
这段代码是exchange类中的一个槽函数ReceiveMessage,用于处理udpSocket接收到的数据报文。首先,通过pendingDatagramSize函数获取接收到的数据报文的长度,并创建一个与长度相同的QByteArray对象array。然后,通过readDatagram函数将udpSocket对象中的数据读取到array中。接下来,使用QDataStream对象stream对array进行解析,获取数据报文中的消息类型msgType、发送消息的用户名usrName以及消息内容msg。同时,获取当前系统时间,并将其格式化为"yyyy-MM-dd hh:mm:ss"的字符串格式。根据解析出来的消息类型msgType,分别进行不同的处理操作:如果是普通聊天消息Msg,则在聊天记录中追加消息内容;如果是新用户进入消息UsrEnter,则调用usrEnter函数处理;如果是用户离开消息UsrLeft,则调用usrLeft函数处理。最后,函数执行完毕。
void (QComboBox:: * sizebtn)(const QString &text)=&QComboBox::currentTextChanged; connect(ui->sizeCbx,sizebtn,[=](const QString &text){ ui->msgTxtEdit->setFontPointSize(text.toDouble()); ui->msgTxtEdit->setFocus(); }); //加粗 connect(ui->boldTBtn,&QToolButton::clicked,this,[=](bool checked){ if(checked){ ui->msgTxtEdit->setFontWeight(QFont::Bold); }else{ ui->msgTxtEdit->setFontWeight(QFont::Normal); } }); //下划线 connect(ui->underlineTBtn,&QToolButton::clicked,this,[=](bool checked){ ui->msgTxtEdit->setFontUnderline(checked); ui->msgTxtEdit->setFocus(); }); //倾斜 connect(ui->italicTBtn,&QToolButton::clicked,this,[=](bool checked){ ui->msgTxtEdit->setFontItalic(checked); ui->msgTxtEdit->setFocus(); }) ; //清空 connect(ui->clearTBtn,&QToolButton::clicked,this,[=]{ ui->msgBrowser->clear(); }); //文本颜色 connect(ui->colorTBtn,&QToolButton::clicked,this,[=]{ QColor color = QColorDialog::getColor(color,this); ui->msgTxtEdit->setTextColor(color); });
这段代码主要是连接了一些 UI 组件的信号和槽函数,用于实现一些文本编辑的功能。首先定义了一个指向 QComboBox 的成员函数 `currentTextChanged` 的指针,并将其与 `sizeCbx` 组件的 `currentTextChanged` 信号关联起来。接着连接了该信号和匿名函数,用于设置当前输入框的字体大小。然后分别连接了加粗、下划线、倾斜和清空功能对应的按钮的 `clicked` 信号和相应的槽函数,用于设置当前输入框的字体加粗、下划线、倾斜和清空文本框。最后连接了文本颜色选择按钮的 `clicked` 信号和匿名函数,用于设置当前输入框的文本颜色。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)