Qt制作局域网即时通讯软件

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-24 04:28:18

Qt制作局域网即时通讯软件

       利用Qt制作的局域网即时通信软件,可实现文本信息、表情包、图片、文档等的传输功能。界面风格模仿的Tim,所以本软件取名为Timi,tim的mini版本。

  1. 登录界面:使用之前做的登录界面,后续修改。原因是没找到好的素材(不会美工),有会美工愿意提供素材的请联系。
  2. 文本信息发送:气泡效n果,文本信揭秘那息可自动换行,并且文本信息可选择/可复制。
  3. 发送图片功能:通过udp发送图片,增加图片浏览器,双击图片可以查看详细信息。
  4. 截图功能:可实现类似微信QQ等截图功能。
  5. 表情包功能:发送表情包,表情包下载于网络上的QQ表情包。
  6. 文件发送功能:实现文件传输功能,样式模仿微信样式,由选择文件可以看到。
  7. 软键盘:调用软键盘,实现中文/英文、数字和符号等输入功能。
  8. 上线/下线广播通知:实现上线/下线提示功能。
  9. 收到消息提示功能:接受到消息,在头像左上角显示红色提示信息。

 1、登录界面

      基本登录界面,登录有托盘提示信息,如下图右下角信息及托盘。



2、主界面 

         主界面样式模仿Tim,实现无边框拖拽、放大、缩小、圆角、阴影、最大化、最小化、托盘等基本功能。

         主界面主要由标题栏、左侧通信录、右侧的在线/离线栏、信息显示窗口、输入工具栏、信息输入窗口等几部分组成。



 


 3、文本信息发送/接受

        之前有通过js+html实现过气泡聊天效果,样式确实不错,不过太占内存了,在此进行改良,通过绘制实现,其中遇到过很多坑,比如绘制好后如何实现自动换行,并且中文/英文/数字换行都可以;再比如绘制的信息如何选择,发送的信息可以复制;还有就是发送图片时发送的图片过大或过小如何显示;发送文件应该如何显示,发送文件时发送样式怎么好看;发送表情包及gif图片如何做到动画播放的效果等等。

         发送文本信息功能,样式为气泡效果,文本信息可以自动换行,文本信息可以选择及复制。

         无论中文/数字/字母/符号都可自动换行,自动换行写了好几天。根据窗口大小,聊天信息自适应大小。




4、发送图片功能

       通过选择图片进行发送,并增加了图片浏览器功能,可以查看图片详细信息,并且可以打印、下载、放大、缩小、还原、文件位置等功能。

       同样也实现了图片拖拽或复制到编辑窗口,可以同时发送多个图片。

       期间遇到的问题是如何显示图片过大或过小的情况,根据文件大小进行缩放。图片浏览器也需要此功能,如果发送常规不是特别大的图片好显示,如果特别大就会出现问题,包括文件进行缩小、放大、还原。

       图片放大,超过图片浏览器大小,目前可以通过键盘上/下/左/右键可以移动,通过鼠标拖拽实现图片移动还未实现,后续会将此功能加上。




5、截图功能

       常规截图功能,类似微信的功能(功能不全,后续会添加),包括截图后图片左右旋转、保存到本地、取消、和保存到剪切板,点击对勾后可以到处进行粘贴。

       微信截图功能还是比较完善的,包括再绘制、重新选择区域等效果。这些效果在之前写的电子白板画图软件中有介绍,后续会将这写功能加上。



6、发送/接受表情包

       表情包源自于网络下载,可以看到发送背景为蓝色看到有白色边框,这不是bug就是素材不好,有好点的gif表情包方便时可以发给我一份。

       发送表情包主要解决的就是表情包选择框的显示/隐藏问题、表情包实现动画效果。



 


7、发送/接受文件

       发送文件样式模仿的是微信,之前想过类似钉钉、QQ、Tim等,最终觉得微信的还是比较不错的,同时可以发送多个,样式和微信一样,这里没录制具体发送,可以翻看微信的。发现电脑版微信自带表情包是静图,之前都没发现。

       同时增加了查看文档详细信息功能,双击文件发送聊天信息,可以显示文档详细信息,单击文档图标跳转到文档具体位置,方便快速定位到文件位置。

       发送文件通过tcp实现,自测发送3g的大文件无压力,不过同时发送多个大文件无亲测。这里设计的不是特别好,会着重改进此处功能。还有就是发送文件进度条显示问题,获取发送进度容易,如何一个显示效果我还没想好,后续慢慢改进吧。



 



8、软键盘

       软件盘的实现如下功能,之前博客也写到了,软键盘皮肤可以更改的,同样字符库可以选择google的。软键盘在嵌入式环境用的比较多,win环境下没什么卵用吧。

       输入框工具栏还有其他功能需增加暂时未想好,欢迎大家提供意见,让功能更加完善。



 9、上线/下线通知

        通讯录采用QQ样式 ,展现用户头像,用户名,ip地址。后续增加签名效果。这里的头像都是固定样式,暂时未实现用户自定义功能,最近在整理上传头像及编辑头像功能,像QQ那样进行头像图片裁剪的效果,实现后再更新此功能。

       通信录这里暂时隐藏了群聊功能,暂时还未想好群聊应该怎么展现,群聊样式该如何,想好后也会将此功能增加上。

        在上下线提示栏能可以看到,上线颜色为蓝色并标记为online,下线颜色为灰色并标记为offline。这个显示效果也是想了好久,主要是因为这里未采用服务器,未能实现离线发送,所以要体现出接受方的在线状态,借鉴的效果不多,可能有在右下加弹出窗口的效果,好像360弹出的广告一样,像我这种360都不安装的人,这效果肯定接受不了。有好点的效果欢迎大家提议,能提供美工素材更是感激不尽。

      上下线没有录制两台电脑实际视频,最多试过5台电脑上下线效果,实测没问题。欢迎下载使用,可亲测。



10、收到消息提示功能

       实现了收到消息提示的功能,提示方式如下面所示。收到消息后会在头像的左上角标记红色圆点。同样接受不了360似的右下角弹广告,奈何也没想到更好的效果。提供素材吧。

      头像图片来自网络,不好看,奈何不会美工,欢迎提供好看点的头像。



11、项目构建

        整个项目代码如下,可以根据命名看到每个模块的实现,整个项目未使用ui,所有界面效果都是通过代码painter 绘制实现。后续会将各个模块具体实现方法分享给大家。

        整个项目代码于2019年12月份每个不眠的深夜一行一行敲的。 


       下载地址

       大家可下载使用,顺便将使用当中的建议/意见及Bug反馈给我,使软件更加完善。

       主界面有我的联系方式,或者在此留言也可以。

       有需要或者想做局域网即时通讯软件的可以联系我。

       整个软件是我自己设计和开发的,能力有限,如存在不妥之处,欢迎大佬们指正。如果觉得不错的就点个赞吧。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!