ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-01-23 20:33:47  阅读:169  来源: 互联网

标签: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设计的那些图标是在阿里巴巴矢量图标库里面找的,完全免费,十分实用。

  • 注册页面
    在这里插入图片描述

  • 登录页面
    在这里插入图片描述
    在这里插入图片描述
    未登录时工具栏图标是灰色,登录后工具栏图标会变更。
    在这里插入图片描述
    在这里插入图片描述

  • 主页面
    在这里插入图片描述

在这里插入图片描述在这里插入图片描述

  • 查找/添加页面
    在这里插入图片描述
  • 查看系统消息
    在这里插入图片描述
  • 分组修改
    在这里插入图片描述
    在这里插入图片描述
  • 好友管理
    在这里插入图片描述
    在这里插入图片描述
  • 群组管理
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 个人信息
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 聊天界面(待完善)
    在这里插入图片描述
    在这里插入图片描述
  • 安全界面(待完善)
    在这里插入图片描述
    在这里插入图片描述
  • 社区界面(待做)

4.总体系统架构图

在这里插入图片描述
在这里插入图片描述

小结

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

标签:Qt,数据库,QQUI,高仿,接字,数据,服务端,客户端
来源: https://blog.csdn.net/weixin_43691745/article/details/118086887

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有