QT炫彩多人聊天室(基于QT、sqlite3、TCP/IP)

        引言:本人经过一段对C++以及QT的学习之后,就像找个项目练练手,检验一下自己这段时间学习的成果;于是,经过3天的创作(主要是css美化花了不少时间),终于写出来了一个聊天室,项目也打包了,分为两个包(客户端和服务器端),经过我的测试,聊天室至少可以同时容纳10人以上(最高能同时连接多少我没有测试);在这期间,我也遇到了很多的困难,通过上网自学相关内容,解决困难的同时,也使自己的编程能力有了很大的提升。

        开发软件:Qt Creator

        重要类:QTcpServer:是一个基于TCP协议的服务器管理类,用于管理服务器的TCP连接,并不具备读写能力、QTcpSocket:继承自QIODevice,因此用于TCP的输入输出操作、QTextStream:表示一个文本流,可以高效的进行字符的输入输出操作(头像功能就是基于此实现的)

        基础功能:服务器端通过TCP协议连接多台客户端设备,实现消息的接收和转发,并存入链表中,以便客户端查看历史消息;多个客户端输入相同IP和端口号后,之后就可选择自己喜欢的头像(内置八款精美头像)并自定义昵称,然后进行连接(相当于进入了同一间“聊天室”),就可以愉快的聊天了!

服务器端

客户端

 设计思路:当时做的时候只想着实现一下多人聊天的功能,以及使用TCP实现多人连接,所以就没有做注册登录界面,在上图中,进入客户端后,会有一个欢迎页面,在几秒钟后会自动销毁,然后会创建出聊天界面,在聊天界面中先进行连接,想要在同一个“聊天室”内聊天,就要所有客户端的输入相同的IP和端口号,然后点击连接按钮,这时就会连接到客户端(原理如下图所示)

此时,不能直接发送消息,因为我设定的是每个人只能更换一次头像和昵称,因此,当写入消息并发送后,头像更改的“切换”按钮以及昵称输入框会被禁用,所以,在发送消息前,一定要选好自己的头像(内部八选一)和昵称。

UI设计思路:首先我的页面背景主要使用了这几个类用以绘制背景

 

 使用这两行代码会使你的页面更专业一些~~~

 头像部分是先将头像地址放入到顺序容器中,通过按钮更改头像,然后拼接到字符创中。

 其他的一些就是更改一下每个元素的“css样式表”了,这个看个人的发挥了~

 历史记录功能:由于在使用数据库对消息存储时,总是会出现一些莫名其妙的问题,还有就是消息不多时,以及不考虑内存的节省情况下,我选择了使用顺序容器来存储历史消息。在服务器端将各个客户端发送的消息提前预存到顺序容器内,弊端就是服务器关闭后,容器内的消息会被销毁。然后客户端点击历史记录按钮后,会向服务器发送一个标识符,同时打开一个新的页面,服务器一直在判断消息是否有标识符存在,此时有的话,就会遍历历史记录的顺序容器,然后发送给该客户端。

最后:我是个新手,代码实现各部分也很简陋,望各位看官不喜勿喷,如若喜欢需要代码的话,请一键三连,私信我哦,看见会第一时间回复的,希望我们共同进步。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值