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

article/2025/11/5 10:31:17

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月份每个不眠的深夜一行一行敲的。 


       下载地址:https://pan.baidu.com/s/1aqHBWd2a9MeTHgWLwnrPAw  密码:tb5v

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

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

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

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


http://chatgpt.dhexx.cn/article/jdlwAx2s.shtml

相关文章

java实现即时通讯软件

导读:即时通讯软件即所谓的聊天工具,其主要用途是用于文字信息的传递与文件传输。使用eclipse作为即时通讯软件的开发工具,使用Socket建立通讯渠道,多线程实现多台计算机同时进行信息的传递,swing技术等进行实际开发相对比较合适。通过一些轻松的注册登录后,在局域网中即…

IM即时通讯软件系统源码安卓、苹果、PC端全开源!

demo软件园每日更新资源,请看到最后就能获取你想要的: ​ 1.《计算机系统结构:解析思路习题》课后答案 "本书是按照全国高等教育自学考试指导委员会制定的计算机及应用专业独立本科段“计算机系统结构自学考试大纲’’要求,并以其指定的自学教材内…

即时通讯软件开发:如何解决网络不稳定的问题?

随着智能手机和互联网的普及,即时通讯软件成为人们生活中不可或缺的一部分。随着即时通讯软件的使用越来越普及,网络不稳定的问题也越来越严重。为了提供更好的服务,我们需要解决这个问题。 网络不稳定的原因 网络不稳定可能由许多因素引起…

im即时通讯软件开发:一文即懂什么是高并发

在即时通讯网社区里,多是做IM、消息推送、客服系统、音视频聊天这类实时通信方面的开发者,在涉及到即时通讯技术时聊的最多的话题就是高并发、高吞吐、海量用户。 代码还没开始写,就考虑万一哪天这IM用户量破百万、千万该怎么办的问题&#…

即时通讯软件源代码_提高软件开发效率的神器,马上收藏起来吧

根据用户开发水平的差异,力软敏捷开发框架提供多种实现业务功能的开发模式。 如果您是初级开发者或者您根本就不会编程那也不要紧,系统可以根据开发向导直接进行功能开发,不需要编写一行代码也无需编译就个完成开发过程。 如果您是一名专业的…

QT开发的即时通讯聊天软件

最近项目需求用QT开发了一款即时通讯软件,差不多了上几个图看看。 登陆界面 主界面-用户列表 最近消息界面 好友聊天界面 文件传输界面 查找和添加好友 消息管理器 系统设置界面 先传这么多,:)

基于C++的即时通信软件设计

目录 — 、 概 述 1 1 . 1 设 计 目 的 : 1 1 . 2 设 计 内 容 : 1 1 . 2 . 1 功 能 设 计 : 1 1 . 2 . 2 界 面 设 计 : 1 1 . 2 . 3 客 户 端 、 服 务 器 设 计 : 1 1 . 3 设 计 要 求 : 1 二 、 设 计 …

企业即时通讯软件开发基本功能有哪些?

即时通讯是基于互联网技术的新型交流沟通方式,是目前最流行的通讯方式,广泛的应用市场使得各种各样的即时通讯软件系统也层出不穷,企业即时通讯就是其中的一种延伸。是一种面向企业终端使用者的网络营销、网络沟通和内容管理的工具服务&#…

IM即时通讯软件开发

废话不多说,要想知道社交IM系统软件公司哪家靠谱,教你怎么辨别软件开发公司靠谱。 一:哪些IM即时通讯软件开发公司不靠谱?用十余年经验,总结出行业公司不靠谱通病。 1、对于一款社交IM系统软件,软件公司给…

移动开发即时通讯APP源码聊天社交软件解决方案

即时通讯app源码特点 1、即时通讯适合的场景包括文字、语音、音视频播放等,比较偏向于文字方面的聊天 2、即时通讯非常适合聊天平台源码的文字聊天,能有效保证用户之间的聊天效率, 3、即时通讯支持消息的采集、处理、编码、解码、播放和渲染…

即时通讯在线聊天APP开发解决方案

即时通讯是目前移动端最为流行的通讯方式,各种各样的即时通讯软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能,打造一个实时通信系统,允许两人或多人使用网络实时的传递文字消息、文件、语音与视频交流。今天河北领行…

开发即时通讯到底需要什么样的技术,需要多久的时间

互联网时代催生了许多新的产业和制度,在各类互联网公司中,软件开发,尤其是即时通讯软件的开发和应用,是重要的组成部分。很多人一想到即时通讯,就会被其高质量的信息通信技术和快速的信息传输速度所折服,同…

一个简单的即时通讯工具的设计与开发

技术:Java等 摘要: 即时通讯(Instant Messaging)是目前Internet上最为流行的通讯方式,各种各样的即时通讯软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能。Java是当前比较流行的开发语言之一&…

C++ 在函数中用static定义的变量的

在C中&#xff0c;在函数中使用static定义一个变量&#xff0c;该变量最终只会分配一次内存&#xff0c;如果下次继续调用该函数&#xff0c;不会再重新分配内存给变量&#xff0c;而是使用上次分配的内存。 #include<iostream> using namespace std;class StaticVer { …

C语言的static函数

前几天&#xff0c;一个同事跟我说在我们的代码库里面看到&#xff0c;一个static函数被放在了头文件里面&#xff0c;可构建的时候却没有报告链接错误。我的第一反应也是&#xff0c;函数被放在头文件里面&#xff0c;当这个头文件被多个源文件引用之后&#xff0c;再把那几个…

c与c++ static函数的区别

c与c static函数的区别 c 与c static 函数的区别 static 关键字是 C, C 中都存在的关键字 , 它主要有三种使用方式 , 其中前两种只指在 C 语言中使用 , 第三种在 C 中使用 (C,C 中具体细微操作不尽相同 , 本文以 C 为准 ).(1) 局部静态变量 (2) 外部静态变量 / 函数 (3) 静…

static的在函数中作用

看如下例子 #include<stdio.h> int f() {static int k0;//用static&#xff0c;k只会在第一次调用这个函数时初始化为0&#xff0c;此后不再初始化k;return k; } int main() {printf("%d\n",f()); printf("%d\n",f()); 再次次调用f()函数&#xff0…

c++中static的用法详解

C 语言的 static 关键字有三种&#xff08;具体来说是两种&#xff09;用途&#xff1a; 1. 静态局部变量&#xff1a;用于函数体内部修饰变量&#xff0c;这种变量的生存期长于该函数。 下面展示一些 内联代码片。 int foo(){static int i 1; // note:1//int i 1; // not…

C语言中static函数

转载自&#xff1a; https://blog.csdn.net/cw616729/article/details/95003577 https://blog.csdn.net/keyeagle/article/details/6708077 1.含义&#xff1a; 定义为static的函数&#xff0c;作用域为本文件&#xff0c;它只能在定义该函数的源文件中使用。 2.好处 使用s…

static作用(修饰函数、局部变量、全局变量)

C语言&#xff1a;static作用&#xff08;修饰函数、局部变量、全局变量&#xff09; 一、 static全局变量与普通的全局变量有什么区别 ? 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。 全局变量本身就是静态存储方式&#xff0c; 静态全局变量当然也…