目录
[1. 项目概述](#1. 项目概述)
[2. 功能实现](#2. 功能实现)
[2.1 主窗口设计](#2.1 主窗口设计)
[2.2 功能性窗口](#2.2 功能性窗口)
[2.3 主界面功能实现](#2.3 主界面功能实现)
[2.4 聊天界面功能实现](#2.4 聊天界面功能实现)
[2.5 个人信息功能开发](#2.5 个人信息功能开发)
[2.6 用户信息界面设置功能](#2.6 用户信息界面设置功能)
[2.7 单聊与群聊](#2.7 单聊与群聊)
[2.8 登录窗口](#2.8 登录窗口)
[2.9 消息功能](#2.9 消息功能)
[3. 核心设计逻辑](#3. 核心设计逻辑)
[3.1 核心类](#3.1 核心类)
[3.2 前后端交互与DataCenter](#3.2 前后端交互与DataCenter)
[4. 项目BUG分析与解决](#4. 项目BUG分析与解决)
[4.1 前后端问题--消息与好友窗口显示问题](#4.1 前后端问题--消息与好友窗口显示问题)
[4.2 客户端请求失败分析](#4.2 客户端请求失败分析)
[5. 项目总结与反思](#5. 项目总结与反思)
1. 项目概述
开发要点总结
- Qt组件和布局管理器完成界面布局设计
- QSS优化界面样式
- 聊天界面的字体、颜色、边框进行了更加精细化的调整,从而使得界面更加美观一致
- 自定义控件样式,例如项目中图片消息、语音等展示,都是通过自定义控件的形式进行显示
- 自定义控件实现复杂的界面效果
- 滚动效果(滚动区域、滚动条)会话列表等滚动
- 通过信号槽实现前后端交互以及人机交互
- 基于Protobuf进行通信数据的序列化和反序列化
- 基于HTTP/WebSocket实现客户端和服务器之间的异步通信,为后期开发服务器打下基础
- 使用多媒体组件,实现音频录制和发送功能
- 项目中涉及到设计模式,例如单例模式和工厂模式的使用,进一步简化代码结构
- 基于QPainter API实现本地随机验证码生成
- 搭建MockServer辅助客户端测试各个功能点
开发功能总结
2. 功能实现
2.1 主窗口设计
详细分析
2.2 功能性窗口
详细实现分析
QT6聊天室项目 功能性窗口设计_qt6聊天窗口-CSDN博客
2.3 主界面功能实现
详细分析
【Qt6聊天室项目】 主界面功能实现_qt6 界面效果源码-CSDN博客
2.4 聊天界面功能实现
详细分析
2.5 个人信息功能开发
详细分析
【Qt聊天室客户端】个人信息界面功能开发_qt做个个人中心-CSDN博客
2.6 用户信息界面设置功能
详细分析
2.7 单聊与群聊
详细分析
2.8 登录窗口
详细分析
2.9 消息功能
详细分析
3. 核心设计逻辑
3.1 核心类
详细分析
3.2 前后端交互与DataCenter
DataCenter功能详细分析
- **单例模式:**整个项目中只有一个DataCenter
- **数据管理功能:**例如会话ID、用户信息、好友列表等
- 网络通信功能
- 内部有一个NetClient的实例对象,用于与服务器进行网络通信,获取和发送数据
- 初始化和关闭WebSocket
- 核心功能
- 获取和更新用户信息
- 好友列表管理
- 聊天会话管理...................
- 信号和槽机制实现各种操作完成后,发送信号,让界面进行更新或者其他操作
【Qt】前后端交互---DataCenter类_qt前后端交互-CSDN博客
4. 项目BUG分析与解决
4.1 前后端问题--消息与好友窗口显示问题
解决思路
【Qt6聊天室项目】前后端-消息与好友窗口显示问题-CSDN博客
概述
该问题的核心在前后端交互过程中数据传递、内存管理和界面渲染的逻辑。在系统排查并修复内存管理以及请求ID传递和页面切换错误后,最终解决该问题。开发中,规范化日志输出和详细的错误追踪是解决BUG的重要手段
4.2 客户端请求失败分析
详细分析
【Qt聊天客户端-min_Bug】客户端请求失败分析-CSDN博客
5. 项目总结与反思
总结
聊天室客户端开发,基于自己所学习的Qt知识,仿照微信的功能,开发的一个Qt前端项目。开发前为了前后端交互数据的效率,系统学习掌握Protobuf的使用,并制定其前后端交互的接口。界面开发中综合自己所学Qt相关知识,借助Qt组件、布局管理器、QSS、信号和槽机制,实现了前后端交互的聊天室。在客户端开发中,制作的服务器只是用于测试客户端是否正常运行。
反思
- **界面设计:**项目中界面设计,许多细节问题的处理,需要自己在基础原理掌握后,才可以熟练进行界面优化,所以针对于其界面设计,要着重自己基础掌握
- **规范化日志:**规范打日志,重要节点打日志,在排查错误的时候可以快速的排查到错误的大概位置。然后通过调试工具找到BUG;修复BUG最重要的还是自己对于业务逻辑熟悉的掌握
- **系统错误排查:**涉及到系统错误,通过查阅官方文档一般可以解决问题,例如目前Qt6上不好用的音频接口,通过官方文档可以仿照写一个用在自己项目中