基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)

文章目录


前言

最近想把自己毕业设计拿出来分享,我是做了一个可以通过局域网聊天的一个聊天软件。UI设计方面我也是尽力往QQ方向去设计。本人也是在开发中学习,所以有什么错误也希望大家指正,或者有什么更好的实现办法,也可以大家一起交流,一起学习。由于项目较大,而且现在工作逐渐繁忙,因此我将各个模块分开来讲,也欢迎大家点赞、收藏、评论,多多支持,十分感谢。


一、使用工具

1. Qt Creator

本次整个项目的开发都是用Qt Creator 5.14.2进行的开发与调试,数据库的话则是用Qt内嵌的轻量级数据库:SQLite数据库进行数据存储。在这我就不过多赘述Qt相关的内容。关于Qt以及其安装流程在CSDN里面有很多大佬写的教程,十分详细!!!

二、项目介绍

聊天软件最最核心的就是通讯 ,该项目采用C/S架构进行展开,即客户端/服务端。两端同时进行开发。

1.客户端

  • 客户端就是使用者使用的那个程式,它的界面能给使用者最直观的展示。
  • 首先你用一款聊天软件给好友发消息,对方是怎么收到的?换台主机登录为什么信息和好友都是保存好的?密码又是怎么进行验证的?这些问题都是我们开发时需要思考的问题。当然了,答案就是因为有服务端在远程默默无闻地工作。那么客户端又是怎么跟服务端进行数据交互的呢?套接字就是整个聊天软件的核心。也是客户端与服务端进行交互时不可缺少的中心轴。

1.1 Socket套接字

  • 所谓的套接字(Socket)是端点的抽象,用于网络中不同主机上的应用程序进程之间进行双向通信
    Socket套接字分为三种:
    (1)流套接字(SOCK_STREAM)
    流套接字基于三次握手和四次挥手上,需要经过监听连接,因此它提供了可靠的数据传输服务。它保证数据的完整性,也确保了数据不会丢失。我们常说的TCP协议,正是流套接字使用的传输控制协议。
    (2)数据报套接字(SOCK_DGRAM)
    数据报套接字它不需要连接。也没用TCP的三次握手和四次挥手,因此它也不能保证数据传输的可靠性,数据的也没用保障,可能在传输过程中出现数据丢失或数据重复的情况。数据报套接字使用UDP协议进行数据传输。
    (3)原始套接字(SOCK_RAW)
    原始套接字可以读写内核没有处理的IP数据包,流套接字只能读取TCP协议数据,数据报套接字只能读取UDP协议的数据。因此,如果要访问其他协议发送的数据必须使用原始套接字。
    以上三种套接字各有各的优点,也有不足之处,例如流式套接字经过三次握手和四次挥手的它,已经变得十分稳定,可以用它进行文件传输等,但像视频通话或者直播平台这些,大多都是采用数据报套接字,这样的好处就是对网络要求不会很高,这也更加适应更广大的用户。

2.服务端

2.1 数据库

  • 此项目中我使用的数据库是sqlite数据库。
    SQLite是一个轻量级数据库,是一个符合ACID的关系数据库管理系统。
    它是个进程内的数据库,它的数据引擎不需要其他的东西去支撑,不独立于进程,能直接通过程序去使用和访问。而且QT对sqlite的兼容性做得很好,使用起来会很方便。

2.2 数据处理

  • 对于服务器的数据处理相关内容比较多,后面会单独写一篇文章来讲解数据处理。

3.效果图

下面是我目前做的这个项目运行的效果图,还有一些功能还需完善和优化。UI设计的那些图标是在阿里巴巴矢量图标库里面找的,完全免费,十分实用。

  • 注册页面
    基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)

  • 登录页面
    基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)
    基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)
    未登录时工具栏图标是灰色,登录后工具栏图标会变更。
    基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)
    基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)

  • 主页面
    基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)

基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)

  • 查找/添加页面
    基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)
  • 查看系统消息
    基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)
  • 分组修改
    基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)
    基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)
  • 好友管理
    基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)
    基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)
  • 群组管理
    基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)
    基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)
    基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)
  • 个人信息
    基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)
    基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)
    基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)
  • 聊天界面(待完善)
    基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)
    基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)
  • 安全界面(待完善)
    基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)
    基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)
  • 社区界面(待做)

4.总体系统架构图

基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)
基于Qt的聊天软件设计实现手把手教学——高仿QQUI设计(一)

小结

由于本人也是第一次写博客,会有很多需要改进的地方,我也会慢慢学习,这个项目我也会慢慢把它全部更新完,有问题的小伙伴可以评论区提出来,希望这篇文章对大家的Qt学习之路有所帮助。

上一篇:025_Python3 reduce 函数高级用法


下一篇:L2-025 分而治之 (25 分)