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

文章目录

  • 前言
  • 一、使用工具
    • 1. Qt Creator
  • 二、项目介绍
    • 1.客户端
      • 1.1 Socket套接字
    • 2.服务端
      • 2.1 数据库
      • 2.2 数据处理
    • 3.效果图
    • 4.总体系统架构图
  • 小结


前言

最近想把自己毕业设计拿出来分享,我是做了一个可以通过局域网聊天的一个聊天软件。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学习之路有所帮助。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于QML模拟QQ群聊窗口

据说最近要开发简单的IM工具,于是兴起,研究了下QQ聊天窗口,大概模拟了一下群聊的聊天显示界面,遂与大家分享之 画面粗糙还望海涵 图片有点大,原理基本就是使用listview来显示每一条记录,别人的记录显示在左侧,自己的聊天记录显示在右侧,但是他们公用的一个内容控件 贴下…

❤️Java实现模拟QQ(消息通信+登陆界面美化)❤️

一、登陆界面的实现 登陆界面主要使用了JFrame,以及相关的一些组件,并且在界面中加上监听 登陆界面效果图 登陆界面代码Login类 package com.lding.login;import com.lding.ui.MsgUI;import javax.swing.*; import java.awt.*; import java.io.IOExce…

QT qq登陆界面设计

使用C结合Qt设计的类似QQ的登录界面,以Ui以及代码结合的方式实现,实现了账号注册、号密对比等功能。先看看效果图: 登录界面: 注册界面: 一共有两个窗口,通过槽函数绑定按钮来显示弹窗(注册界面…

QT学习之QQ聊天案例

1、实现功能 本程序模拟实现QQ群聊功能,采用UDP通信方式,可以设置字体,保存聊天记录等,实时显示上线离开人数以及具体人员。可视为简化版的腾讯QQ。目前只有群聊,未实现一对一单独聊天。 完整源代码见:ht…

【教学类-36-01】Midjounery生成的四张图片切片成四张小图

作品展示: 把一张正方形图片的四个等大小图切割成四张图片 背景需求 最近在学习ChatGPT的绘画(midjounery AI艺术) 我想给中班孩子找卡通动物图片(黑白线条),打印下来,孩子们练习描边、涂色…

chatgpt赋能python:Python校验身份证号码真伪

Python校验身份证号码真伪 身份证号码是我们日常生活中非常重要的证件,但也有一些人从事非法活动,对身份证号码进行伪造或者篡改。为了保护公民的合法权益,我们需要使用技术手段来校验身份证号码真伪。而Python作为一种广泛应用于数据处理和…

【科普级别:刚出炉的ChatGPT三连问】

科普级别:刚出炉的ChatGPT三连问 前言【ChatGPT是什么?对我们的生活有什么影响?】【中国为什么不能使用ChatGPT?美国想让中国用户使用吗?】【通义千问、文心一言、ChatGPT你更看好哪一个?】 前言 有些人连C…

又一个国内类ChatGPT模型?【秘塔科技上线自研LLM大模型「对话写作猫」】

又一个国内类ChatGPT模型?【秘塔科技上线自研LLM大模型「对话写作猫」】 (马上被打脸 ~ ~) 一直期待中国有没有类ChatGPT产品可以出现。 昨天,2023年2月27日,秘塔科技上线了自研LLM大模型「对话写作猫」,…

小白入门区块链(通俗易懂)

区块链基础入门 什么是区块链 科技层面解释 数学,密码学,互联网,计算机编程官方解释 区块链是一个分布式的共享账本和数据库,具有去中心化,不可篡改,全程留痕,可以追溯,集体维护&am…

2023年加密行业会更难吗?欧科云链研究院“七大趋势预测”

回望2022,加密行业遭遇了种种不可控因素而导致的艰难险阻,也在变革与发展中孕育着生机与活力。 这一年,我们亲眼目睹了Luna暴雷,三箭资本、FTX这些曾经被认为“大而不倒”的机构接连倒下,市场信心严重受挫&#xff1b…

​别急着骂百度,来看看大模型到底怎么用

文|光锥智能,作者|周文斌,编辑|王一粟 GPT-4惊艳亮相后,压力来到百度这边。 上台后的李彦宏和百度CTO王海峰都略显紧张,这在多年百度相关活动中还是非常少见。李彦宏坦言,“文心一言…

Node.js 高级编程之 Stream(我是跟 ChatGPT 学会的)

前言 在做 SSR Stream Render 的时候遇到了 Node.js 的 Stream,但是对其总是一知半解。正好最近 ChatGPT 很火,找他学一学吧,没想到真的把我教会了。PS:文末有跟 ChatGPT 的精彩对话(请忽略我稀烂的英语)。…

《不想放水》

原创:刘教链 * * * 由刘教链和ChatGPT共同填词。原曲:S.H.E.《不想长大》。 为什么就是找不到放水的证据呀 为什么救助的银行都不愿退市啊 我并不希望他拥有比特币和黄金 我惊讶的是假话竟然会变成谎话 为什么美元印钞机要转的那么快 为什么通胀和失业率…

存储器介绍

文章目录 存储系统基本概念存储器的层次存储器的分类存储器的性能指标 主存储器半导体元件的原理存储芯片的基本原理寻址 DRAM和SRAMDRAM的刷新DRAM的地址复用 只读存储器ROM主存储器和CPU的连接位扩展字扩展字位同时扩展补充 双端口RAM和多模块存储器双端口RAM解决多核CPU访存…

OpenAI文档翻译——在不通的场景下如何更好的设计ChatGPT提示词

概述 OpenAI可以被广泛的应用于各种任务,他为各种模型提供使用简单而功能强大的API。你可以输入一些文本作为提示词,OpenAI则会生成对应的提示词补全,在使用过程中这就是会话形式以及能够记住上下文的体现。探索如何生成提示词的最好方法就是…

如何使用ChatGPT 写官方声明?

上海车展宝马Mini展台被指区别对待中外访客,向外国访客送冰淇淋,中国访客索要时则说“没有”,此事引发争议。 对此,宝马官方也发布了官方致歉声明,网友看到声明后,纷纷发布自己的看法,有网友还…

独家专访:OpenAI 的 Sam Altman 谈 ChatGPT 以及通用人工智能如何“打破资本主义”

来源: AI前线 作为 OpenAI 的首席执行官,Sam Altman 领导的这家初创公司是正在快速增长的生成式 AI 行业中最热门且最受关注的一家。在 1 月中旬参观了 OpenAI 的旧金山办事处后,福布斯采访了这位最近不太愿意在媒体上抛头露面的投资者和企业家&#x…

ChatGPT is not all you need,一文看尽SOTA生成式AI模型:6大公司9大类别21个模型全回顾(三)

文章目录 ChatGPT is not all you need,一文看尽SOTA生成式AI模型:6大公司9大类别21个模型全回顾(三)Text-to-Text 模型ChatGPTLaMDAPEERMeta AI Speech from Brain Text-to-Code 模型CodexAlphacode Text-to-Science 模型Galacti…

千万级入口服务[Gateway]框架设计(三:分层模式)

本文将以技术调研模式编写,非技术同学可跳过。 文章目录 背景分层分发Handle分发hook分发并发分层 管道ChannelDemo 实现 小结 附录 背景 基于组件(插件)模式设计构建的入口服务实现中,使用 Go 原生包 plugin 的时候,会存在功能缺陷问题&am…

ChatGPT配合两款神器,1分钟生成流程图

流程图,工作上再正常不过的一种图形,常见制图方法对比: 传统手动制图:耗时耗力,迁移性差AI 辅助制图:使用自然语言提出需求,零基础快速制图 几款常见的我在用的在线绘图工具推荐: Pr…