QT6 C++ 高仿QQ--1.企业级即时通信系统架构

一、整体架构

即时通信主要功能提供人与人远程沟通的消息[文字、图片、截屏]/语音/视频/文件传输等功能。考虑到网络比较复杂,包括家庭网络,公司网络,机场/车站等公共网络,移动网络,涉及到私有网络与公网直接的通信,系统架构为CS架构,如图:
系统软件整体架构

二、客户端软件

客户端软件包含两个部分:

  1. host后台服务进程:windows采用service服务模式,linux为后台独立进程,采用C++语言开发,epoll[linux、mac]/iocp[windows]网络通信,sqlite3本地数据库,host与ui的进程通信,host与服务器端网络通信以及host与ui进程通信消息编码采用protobuf,aes消息数据加密,等主要技术;客户端与服务器的用户采用 SRP (Secure Remote Password)安全远程密码认证实现,保障用户认证安全性。
  2. irtc-client客户端UI软件:客户端UI采用QT6 C++ QWidget开发,此部分为本专题主要介绍的内容。

三、服务端软件server

服务端完成用户管理,消息转发,消息存储,语音和视频通信数据转发等功能,服务端90%采用C++语言开发,web用户管理部分采用drogon框架+vue+element UI。
服务端主要技术:

  1. 用户管理/消息转发服务,语音通信,视频会议服务等独立服务部署,支持服务集群
  2. 采用redis缓存
  3. 服务端采用mysql进行消息,用户,语音/视频数据存储
  4. 消息队列采用kafka
  5. 支持http/https web端用户管理,采用drogon开源服务端框架
  6. 服务端epoll/IOCP网络通信,可以部署到window和linux服务器

四、本专题重要说明

本专题主要是QT6 C++ QWidget实现高仿QQ UI和相关功能介绍,供QT初学者和有一定QT c++开发经验需要进一步学习做企业级客户端软件的工程师学习提高。host和server部分不是本专题的重点。主要功能

  • 无边框主界面,自定义最大最小化/关闭功能
  • 左侧工具栏中间消息/通信录导航+右侧内容展示三分屏主界面
  • 左侧导航工具条:自定义QWidget
    • 主要功能:个人信息、聊天、会议、设置、其他、与host和服务端通信状态
    • 导航按钮:字体图标+文字+提示的按钮
    • 导航按钮状态切换:hover、选中、非选中状态不同颜色展示
    • 使用QStackWidget完成各个重要功能切换
    • 个人信息:
      • 非模态对话框:个人头像/id/在线状态、性别、年龄、地址、签名
      • 鼠标点击主窗口自动关闭个人信息显示
      • 编辑个人信息自动关闭个人信息QDialog
  • 中间消息导航列表:自定义QListwidget展示复杂图片+不同大小颜色文字
    • 好友头像,昵称,最新聊天信息,最新聊天信息时间展示
    • 选中好友右侧内容区切换到对应的聊天信息
  • 中间通信录导航自定义QWidget
    • 包含搜索、好友通知、QTreeWidget树,树的一级为分组:设备列表、好友列表、我加入的群列表、我创建的群列表,二级展示对应的设备列表、好友列表、群列表
    • 自定义不同类型树导航QTreeWidgetItem
    • 不同类型间选中/非选中状态切换,保障
    • 不同类型的导航选中的右侧内容不同展示,包括消息通知、快捷按钮、设备列表、好友列表、群列表、自定义好友分组
  • 右侧聊天主界面,title+聊天内容展示+聊天信息输入三分屏
    • 上面QPushbutton按钮组:文字title+字体图标快捷功能按钮+功能提示
    • 中间自定义QListWidget:展示复杂聊天信息,自定义QListWidgetItem
      • 消息内容:消息来源的头像和昵称[群聊]+消息+时间
      • 消息状态切换:选中/非选中/鼠标hover不同颜色展示
      • 某个好友的聊天导航被选中,右侧消息内容切换展示对应好友的聊天信息
      • 软件启动根据好友列表/群列表从本地sqlite3数据库中加载好友与群聊天导航列表
      • 消息状态:撤回状态、选中、非选中状态切换,根据鼠标焦点是否在QListWidgetItem动态改变消息选中,比如从消息选中时,焦点切换到消息输入
      • 选中消息:右键菜单:撤回/转发/复制/引用/删除等功能
      • 发送的与收到消息的分两边显示,不同颜色展示,系统消息不同颜色和中间位置展示
      • 动态增删自定义Widget中部分部件
      • 消息内容根据QListWidget大小变化而动态变化QListWidgetItem位置
      • 初始聊天内容最多加载10条,根据滚动条动态加载本地数据库sqlite3中的聊天消息
    • 下面聊天信息输入,自定义QTextEdit
      • 捕捉剪贴板/回车按键/ alt shift + enter组合键
      • 插入剪贴板的内容到编辑框,以不同颜色只读状态展示
      • 插入聊天信息列表中拷贝的消息
      • 根据编辑框是否有内容改变发送按钮的颜色
      • 可以发送表情、文字、图片、todo:文件、语音、短视频等内容
  • 右侧好友通知QListWidget
    • 自定义QListWidget展示新加好友信息:头像、昵称、主动或被动、时间,邀请状态
    • 根据主动邀请或被动邀请状态动态删减QWidget
    • 点击接受按钮动态增加或删除小QWidget部件
    • 点击好友头像弹出非模态QDialog展示好友详细信息
  • 右侧设备信息展示:OS、CPU核数、CPUID、主板信息、HD信息
  • 右侧好友信息展示:头像、昵称、id,在线状态、好友签名、所属分组,聊天快捷按钮
  • 右侧群信息展示:群头像、群名、群的描述、我对群的备注、我在群的昵称、群成员,人数,进入群聊快捷按钮
  • 24
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chrisLee_sz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值