【Qt聊天室客户端】单聊与群聊

1. 区分单聊和群聊

逻辑分析

 具体实现逻辑

  • 主窗口完善判断单聊还是群聊的逻辑

  • 单聊会话详情入口中,设置头像和昵称

2. 删除好友

直接找到删除好友的按钮,然后实现其删除逻辑即可

具体实现

无法删除好友BUG处理

问题复现,点击好友删除后,请求和响应日志都正常打印,但是界面中的好友没有删除

  • 判断核心数据类中移除好友操作(添加日志进行判断)

  •  打印日志后,发现问题不在于此,进一步检查主窗口发送删除好友信号ID是否错误

  • 总结问题:删除好友的时候,并没有将要删除好友的ID发送过去,从而导致的错误,修改该处逻辑后测试

 

 3. 选择好友窗口

3.1 加载会话列表

 

加载好友列表实现

  • 选择好友窗口进行初始化操作 

  • 其中如果是点击聊天的用户,应该自动加载到会话列表中

3.2 完成和取消逻辑实现

 ​​​​

实现分析

该处创建和取消逻辑的实现,也是涉及到前后端交互,客户端发起请求,然后服务器响应,客户端解析响应,主界面通过槽函数对信号做出反应

具体实现

  •  客户端通过netclient开始发送网络请求

  •  服务端注册路由、解析请求、构建响应

  •  客户端出现响应,然后发送信号让界面进行处理

3.3 推送群聊会话创建数据

主要逻辑即是通过服务器发送响应,客户端处理该响应,最后通过信号槽机制让主界面更新即可

具体实现

  • 服务端点击按钮发送信号

  • 服务端对该信号通过槽函数的方式进行处理

  • 客户端处理响应,并通知主界面对其更新

4. 群聊会话详情-加载成员列表

具体实现

  • 通过dataCenter获取群聊好友列表

  •  客户端向服务端发送请求

  •  服务端设置路由,并处理客户端发来的请求

  • 客户端处理响应,首先重新设置好友列表、然后发给信号让好友显示窗口更新

  • 界面更新逻辑

5. 搜索用户窗口

功能1:点击搜索框显示好友结果

  • 通过搜索框点击触发信号槽机制

  • 客户端开始向服务端发起请求

  • 服务端开始处理请求(设置路由,构建响应)

  •  客户端处理服务端发送过来的响应

 

  •  点击按钮处的槽函数进行处理

功能2:添加好友列表的实现

 

6. 历史消息窗口

功能1:根据关键词搜索历史消息

  • 客户端判断是否为关键词搜索逻辑

  • 客户端向服务端发起获取历史消息列表的请求

  • 服务端处理客户端发送的获取历史消息请求
    • 此处因为构建了多种类型的消息,所以最后日志才会打印多种类型消息

  • 客户端处理响应
    • 将获取到的历史消息存到dataCenter中
    • 通知页面对获取到的历史消息进行更新

 

 

功能2:根据时间段搜索历史消息内容

  • 客户端发送请求,获取特定时间段的内容

  • 服务端处理请求
    • 设置路由,然后构建响应返回给客户端

  •  客户端处理响应

  •  客户端处理信号的位置,两个功能是通过同一个槽函数,此处省略

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/9617.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

1.集合体系补充(1)

1.接口式引用 集合的构造,我们需要采用接口类型引用的的方式,这样做的好处就是方便根据业务或者设计上的变化,快速更换具体的实现。 事实上,Java集合设计体系者也是支持我们这样做的,并且集合体系的设计也是如此的。 创…

枚举及优化(一)

第1题 百钱买百鸡 查看测评数据信息 百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用 100 文钱买 100只鸡,公鸡、母鸡、小鸡各买多少只?本程序要求解的问题是:给定一个正整…

自注意力机制

当输入一系列向量,想要考虑其中一个向量与其他向量之间的关系,决定这个向量最后的输出 任意两个向量之间的关系计算 计算其他向量对a1的关联性 多头注意力机制 图像也可以看成一系列的向量,交给自注意力机制处理,CNN是特殊的自注意…

RabbitMQ的死信队列

1.死信的概念 死信简单理解就是因为种种原因,无法被消费的消息. 有死信自然就有死信队列,消息再一个队列中编程死信之后,它能被重新发送到另一个交换器中,这个交换器就是DLX,绑定DLX的队列,就被称为死信队…

十六 MyBatis使用PageHelper

十六、MyBatis使用PageHelper 16.1 limit分页 mysql的limit后面两个数字: 第一个数字:startIndex(起始下标。下标从0开始。)第二个数字:pageSize(每页显示的记录条数) 假设已知页码pageNum&…

SpringBoot框架在共享汽车管理中的应用

3系统分析 3.1可行性分析 通过对本共享汽车管理系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本共享汽车管理系统采用SSM框架,JAVA作为开发语…

数字化转型助手 快鲸SCRM系统为企业营销赋能

内容概要 在当今这个快速变化的商业环境中,数字化转型已经成为企业生存与发展的关键要素。无论是零售、制造还是服务行业,企业都深刻意识到传统工作模式的局限性,必须借助先进的技术来优化运营和提升客户体验。快鲸SCRM系统就是这样一款数字…

ZooKeeper在kafka集群中有何作用

Zookeeper 存储的 Kafka 信息 (1)启动 Zookeeper 客户端。 bin/zkCli.sh (2)通过 ls 命令可以查看 kafka 相关信息。 [zk: localhost:2181(CONNECTED) 2] ls /kafkazk中有一个节点 consumers 这个里面,老版本0.9版…

Linux操作系统:学习进程_对进程概念的深入了解

目录 前言 开篇 一、进程概念 二、进程的描述与管理 1、如何描述与管理 2、Linux中的PCB-task_struct 3、对进程组织的理解 三、进程的属性 1、系统创建进程 2、查看进程 3、进程的标识符 4、退出进程 1>ctrlc 2>kill命令杀死进程 5、用户进程的创建方式…

Embedding 技术在推荐系统中的应用

参考自《深度学习推荐系统》——王喆,用于学习和记录。 介绍 Embedding,中文直译为“嵌入”,常被翻译为“向量化”或者“向量映射”。它的主要作用是将稀疏向量转换成稠密向量,便于上层深度神经网络处理。事实上,Emb…

Kafka面试题

1、kafka消息发送的流程? 在消息发送时涉及到了两个线程,main 线程 和 sender 线程 ,在main线程里面创建了一个双端队列(RecordAccumulator) ,当双端队列里面的信息满足 一定的条件后, sender线程会拉取双端…

RabbitMQ延迟队列(重要)

RabbitMQ延迟队列 1、延迟队列1.1、延迟队列使用场景1.2、延迟队列实现原理 2、使用rabbitmq-delayed-message-exchange 延迟插件2.1、下载2.2、安装2.2.1、解压2.2.2、启用插件2.2.3、查询安装情况 2.4、示例2.4.1、RabbitConfig配置类(关键代码)2.4.2、…

机器学习—神经网络如何高效实现

深度学习研究人员能够扩展神经网络的原因之一,在过去的十年里建立了非常大的神经网络,是因为神经网络可以向量化,它们可以使用矩阵乘法非常有效的实现,事实证明,并行计算硬件,包括gpus,但也有一…

【数据集】【YOLO】【目标检测】水面船只识别数据集 9798 张,YOLO船只识别算法实战训练教程!

一、数据集介绍 【数据集】水面船只识别数据集 9798 张,目标检测,包含YOLO/VOC格式标注。 数据集中包含1种分类:{0: ship},代表水面船只。 数据集来自国内外图片网站和视频截图; 可用于无人机船只检测、监控灯塔船…

斜坡函数功能块(支持正常停机和紧急停机切换)

1、CODESYS斜坡函数功能块 CODESYS斜坡函数功能块(ST源代码)_用plc难能写一个斜坡加减速度吗-CSDN博客文章浏览阅读1k次。本文介绍了如何在CODESYS平台上创建斜坡函数功能块(FC),用于PID闭环控制中的给定值平滑处理。通过ST源代码实现,详细步骤包括仿真测试、变量修改、FC…

渗透测试--web基础之windows(二):常用命令详解及病毒编写

声明:学习素材来自b站up【泷羽Sec】,侵删,若阅读过程中有相关方面的不足,还请指正,本文只做相关技术分享,切莫从事违法等相关行为,本人一律不承担一切后果 目录 一、常见端口对应的服务 二、 常见的cmd命…

【含文档】基于ssm+jsp的客户管理系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: apache tomcat 主要技术: Java,Spring,SpringMvc,mybatis,mysql,vue 2.视频演示地址 3.功能 管理员登录进入…

腾讯混元宣布大语言模型和3D模型正式开源

腾讯混元大模型正在加快开源步伐。 11月5日,腾讯混元宣布最新的MoE模型“混元Large“以及混元3D生成大模型“ Hunyuan3D-1.0”正式开源,支持企业及开发者精调、部署等不同场景的使用需求,可在HuggingFace、Github等技术社区直接下载&#xff…

《常用深度学习神经网络及其原理与应用场景》

一、总体介绍 一、引言 随着科技的不断发展,深度学习已经成为人工智能领域中最具影响力的技术之一。深度学习神经网络通过模拟人类大脑的神经元结构和工作方式,能够自动学习数据中的特征和模式,从而实现各种复杂的任务,如图像识…

操作系统三级调度相关习题

填空题 微机是以(总线)为组带构成的计算机系统在批处理兼分时系统中,往往把由分时系统控制的作业称为(前台)作业,把由批处理系统处理的作业称为(后台)作业在分时系统中,若时间片长度一定,则(用户数越多),系统响应时间…