基于Qt的局域网即时通讯软件

article/2025/11/9 6:59:19

以前写的一篇日志,不小心删了,竟然没得恢复。万恶的CSDN,重排版。

第一个写的软件。基本上还是很粗糙,而且代码也大多不是自己写的,不过也着实让我过了一把瘾。接下来简单地讲讲整个过程和学到的东西吧。

首先是软件的框架,自己主观地YY了很久,因为之前没有相关的经验,所以好多东西都一厢情愿地想当然了,以至于到真正动手的时候才恨不得一掌劈死自己。

(以下此段是自我YY,可跳过)我想像中的框架应该是首先有一个自定义类,暂且管它叫freeTalk类(实际上我也是这么命名的,汗),它主要负责完成局域网内在线用户列表的获取更新等。另外有一个类叫chat,用于用户间的即时通讯,也就是发发文字信息。还有一个类用于文件传输,它老人家叫transmission,传责完成文件的传输。

然后我就天真地开始工作了,首先是啃Qt的书,《C++ GUI Qt4编程》这本书还不错,虽然我到目前为止只看了几章。为了比较了解网络方面的协议什么的,还看了一些《UNIX网络编程 卷1》和计算机网络(结果发现没啥作用)。

先是在XP下安装Qt4,之前只有fedora16下面装过,都是用yum直接搞定的。。。这真是一个漫长的过程,被虐死了好几次。最后总结到的方法是:

1、下载mingw.rar,qt-win-opensource-4.8.4-mingw.exe和qt-creator-windows-opensource-2.7.1.exe,不要问我从哪里下的,因为我也忘了,还有这个是用Qt Creator集成开发环境进行开发的环境搭建,其他的像VS 2008、eclipse什么的请参考别的;

2、解压mingw.rar到D盘(当然也可以到别的盘,自己喜欢),安装qt-win-opensource-4.8.4-mingw.exe,过程中指定mingw文件夹,安装qt-creator-windows-opensource-2.7.1.exe;

3、打开Qt Creator,找到工具->选项,配置如下图所示:


4、配置环境变量(不知道是不是必要),我的电脑 》》属性 》》高级 》》环境变量 》》系统变量 》》Path,编辑,增加D:\Qt\bin\;D:\mingw\bin\(相对于安装目录而言),另外有一点值得注意的是,这货在windows下好像不能支持中文路径,所以项目不要创建在中文路径下,不然会出错。

然后可以开始了,创建项目,添加文件等等东西就不说了。总的来说实际做出来的东西分4个类,一个主窗口freeTalk类,一个聊天窗口chat类,一个tcpClient类,一个tcpServer类,像我YY的结果,不过文件传输被拆成了两半。实际的效果图如下所示:


整个过程中我觉得比较有意思的几个地方是:

1、要怎么实现按下Enter按键发送信息呢?一开始我觉得只要把sendButton的设置autoDefault属性即可,不过没成功,我想了一下可能的原因是焦点设在了textEdit上,没有求证过,原谅我这个初学者吧,后来还找到一个办法,就是用textChange信号来捕捉‘\n’换行符,然后直接调用on_sendButton_clicked()槽(原来槽还可以直接调用),不过这种方法缺点是会连‘\n’一起在内容被发送显示。所以最后找到了一个方案,如下:

boolchat::eventFilter(QObject*target,QEvent*event)

{

    if(target==inputEdit)

    {

        if(event->type()==QEvent::KeyPress)

        {

             QKeyEvent*k=static_cast<QKeyEvent*>(event);

             if(k->key()==Qt::Key_Return)

             {

                 on_sendButton_clicked();

                 returntrue;

             }

        }

    }

    returnQWidget::eventFilter(target,event);

}

用一个事件过滤器,来捕获键盘输入事件,圆满解决。

2、对于要使用到的图片什么的,要先载入资源文件中,背景图片可以jpg格式的,作为一些控件的图标需要是png格式的。还有应用程序的图标是ico格式的,设置应用程序图标的步骤如下:

首先准备个ICO图标。例如:myappico.ico;用记事本新建个文件,里面就写一行:IDI_ICON1          ICON   DISCARDABLE   "myappico.ico"

保存改名为 myapp.rc并把它和你的图标myappico.ico一起复制到你的QT工程项目的目录。用记事本打开你的QT工程文件(如 "myapp.pro" ),在里面最后新添一行:RC_FILE = myapp.rc

3、每次创建聊天窗口之后,假如用close()关闭,因为chat是作为freeTalk的子窗口,所以实际上该部分内存还没有释放的,窗口只是隐藏了起来,只有等父窗口退出后才会释放。以下是从Qt Creator帮助中看到的一段:First it sends the widget a QCloseEvent.The widget is hidden if it accepts the close event. If it ignores the event,nothing happens. 当然也有可能是我误解了,毕竟我只是个菜鸟。所以为了保险起见,我每次都特地捕获这个事件,然后显式释放掉内存;

4、比起在构造函数中设置背景图片,在Qt Designer里用修改样式表来得更好一些,因为就填充来说,假如用了圆角控件的话,前者可能会出现填充不完整的现象,不过这只是个人的使用经验而已;

5、关于字体的事一直没弄明白,总是显示乱码,最后用一句:

QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8"));

就好了,windows不是说好的用GB2312的吗,节操呢?

6、关于发布,静态编译各说各话,都不知道该相信谁了,最后没辄,弄个动态编译,于是就拖家带口200多个M的dll文件一起吧,相对于静态编译的麻烦来说我还是不介意的。值得说一下的是VS2008有个工具叫depends的软件还挺好用的,可以用来检测依赖关系,看看到底需要哪些动态链接库,再包含到工程目录下就行了。

 

大概就这么多吧,其他有一些遇到的问题都忘了,毕竟是三个星期前做的东西,下次要及时点做个总结才行。



http://chatgpt.dhexx.cn/article/4XPsM7lc.shtml

相关文章

企业的财务部门为什么要用内网即时通讯软件

1、内网即时通讯可以提高内部沟通效率 财务部是企业中一个非常重要的部门&#xff0c;与其他部门进行沟通协调的频率非常高。使用内网即时通讯可以快速方便地与其他部门沟通&#xff0c;帮助快速解决问题。 2、内网即时通讯更加安全 财务部的工作涉及到财务数据&#xff0c;需…

Python 局域网即时通讯工具

刚刚接触Python, 小白一个 为了学习Python, 所以试着写了一个局域网聊天的小工具 如果代码有什么问题&#xff0c;希望大家能给予指正&#xff0c;非常感谢 源代码连接(GitHub)已生成EXE文件&#xff0c;可在Windows下直接运行。Python 版本 3.7.3GUI编程&#xff0c;需要安装…

为什么企业选择局域网即时通讯软件?局域网即时通讯软件哪家好?

在当今互联网普及的时代&#xff0c;企业内部的沟通对企业管理有着非常重要的意义&#xff0c;即时通讯软件已成为企业工作中广泛采用的沟通工具。 然而&#xff0c;随着企业内部敏感信息通过互联网泄露的频繁发生&#xff0c;例如在工作期间&#xff0c;企业员工自发地频繁使…

企业局域网即时通讯软件存在是必然趋势

自从21世纪以来&#xff0c;经济全球化趋势越来越明显&#xff0c;尤其是发展中国家。我国经济发展更是迅猛&#xff0c;各行各业之间的竞争也是日益激烈。 如果不想被飞速发展的社会淘汰&#xff0c;现代企业就必须以最快的速度应对复杂又变化莫测的市场环境。企业内部的沟通对…

企业选择局域网即时通讯软件的必要性是什么?

在互联网时代&#xff0c;很多企业不断进行数字化升级&#xff0c;想要摆脱沟通麻烦、流程复杂、资源利用率低的传统办公模式&#xff0c;推进线上办公或远程办公信息化建设&#xff0c;而这就离不开我们常说的“即时通讯软件”来进行连接。 那什么是即使通讯软件呢&#xff1f…

局域网即时通讯软件可以保护数据安全吗?

根据调查显示&#xff0c;出于安全考虑&#xff0c;现在很多企业已禁止使用个人即时通讯软件。因为个人通讯软件缺乏完善安全机制&#xff0c;容易出现内部资料泄漏问题。只有安全的通讯软件—局域网即时通讯软件才能提高企业工作效率&#xff0c;增强员工协同办公能力&#xf…

局域网即时通讯软件_什么样的企业即时通讯软件好用?应该如何选择?

企业即时通讯是目前最为流行的通讯方式&#xff0c;市场上的即时通讯软件层出不穷&#xff0c;种类繁多&#xff0c;我们一时也不知道怎么选择。为了方便企业更好的选择即时通讯软件&#xff0c;我对目前市面上的一些即时通讯软件进行了分类和总结&#xff0c;希望对大家有帮助…

局域网即时通讯软件应该怎么选择

现在&#xff0c;国内外做即时通讯软件的公司很多&#xff0c;产品也是多种多样。在国内&#xff0c;数得上名字的有腾讯QQ&#xff0c;微信&#xff0c;新浪UC&#xff0c;网易泡泡等等&#xff0c;国外比较排的上名的有著名的MSN以及跨平台Gaim等。这几种即时通讯软件都是需要…

局域网即时通讯软件怎么部署

如今&#xff0c;国家经济体系正逐渐完善中&#xff0c;科技领域也处于高速发展阶段&#xff0c;各企业都在加快内部工作节奏&#xff0c;以求获取更好的发展机会。以前企业内部通讯系统往往是电话、电子邮件等传统方式&#xff0c;这些方式往往需要等待很长时间才能得到回复&a…

如何部署局域网即时通讯软件

如今&#xff0c;国家经济体系正逐渐完善中&#xff0c;科技领域也处于高速发展阶段&#xff0c;各企业都在加快内部工作节奏&#xff0c;以求获取更好的发展机会。以前企业内部通讯系统往往是电话、电子邮件等传统方式&#xff0c;这些方式往往需要等待很长时间才能得到回复&a…

内网沟通软件都有哪些?

近些年来&#xff0c;互联网的迅速发展&#xff0c;给人们的生活和工作带来了许多便利性&#xff0c;但却给企业带来了一个问题&#xff0c;信息泄露。由于企业内部敏感信息通过互联网的泄露的事件频发&#xff0c;不少企业只能转用内网环境办公&#xff0c;企业内部原本的互联…

局域网即时聊天工具都有哪些?

在互联网普及的今天&#xff0c;使用即时聊天工具沟通交流在人们的日常生活和工作当中已经十分普及。但由于企业内部敏感信息通过互联网泄露的现象频发&#xff0c;不少企业出于安全性考虑只能转用局域网环境办公&#xff0c;在转用局域网环境办公后也只能使用局域网即时聊天工…

局域网聊天软件都有哪些?几款常用的局域网聊天软件推荐

随着科技的不断发展&#xff0c;人们在日常生活和工作中越来越需要高效便捷的沟通工具。而局域网聊天软件就是一种在局域网内使用的聊天工具&#xff0c;它能够帮助用户在同一网络内的设备之间进行即时通讯&#xff0c;无需依赖于互联网连接&#xff0c;安全又可靠。下面将为大…

【虹科】5个步骤有效监控网络流量

监控大型企业级组织的网络流量与家庭办公室的网络流量是完全不同的。大多数大公司都有各种域&#xff0c;如WAN、SD-WAN、数据中心、AWS、Azure等。随着大型企业的网络环境的扩大&#xff0c;监控网络流量变得越来越困难。了解如何监控网络流量对于确保网络运行的最佳状态至关重…

准确有效侦测、分析网络流量

随着企业向云迁移、5G落地、物联网设备激增、网络爆炸、网络流量变得海量复杂&#xff0c;企业经常会遇到网络拥塞和服务质量低等一系列问题&#xff0c;加强网络管理和改善网络的运行己成为当务之急&#xff0c;如何有效识别、监测、分析网络流量成为企业的重要研究方向。因此…

网络流量分析 NetFlow是什么 详解 科普 ~互联网业务流量监测技术的应用和设计---perfect

前言 随着宽带互联网在中国的迅速发展&#xff0c;全国各大电信运营商的网络规模都在不断扩张&#xff0c;网络结构日渐复杂&#xff0c;网络业务日趋丰富&#xff0c;网络流量高速增长。电信运营商需要通过可靠、有效的网络业务流量监测系统对其网络以及网络所承载的各类业务进…

实时监控网络流量,精准辨别网络性能瓶颈

网络流量反映网络运作状态&#xff0c;是辨别网络运行是否正常的关键指标&#xff0c;通过对网络流量进行监测不仅能反映交换机、路由器等设备的工作状态&#xff0c;更能体现整个网络资源的运行性能。同时&#xff0c;用户在网络中的行为可以通过其承载的流量动态来展现&#…

网络流量分析netflow

前言 随着宽带互联网在中国的迅速发展&#xff0c;全国各大电信运营商的网络规模都在不断扩张&#xff0c;网络结构日渐复杂&#xff0c;网络业务日趋丰富&#xff0c;网络流量高速增长。电信运营商需要通过可靠、有效的网络业务流量监测系统对其网络以及网络所承载的各类业务进…

网络流量监测技术

NetFlow是Cisco公司提出的网络数据包交换技术&#xff0c;该技术首先被用于网络设备对数据交换进行加速&#xff0c;并可同步实现对高速转发的IP数据流(Flow)进行测量和统计。 随着宽带互联网在中国 的迅速发展&#xff0c;全国各大电信运营商的网络规模都在不断扩张&#xff0…

网络流量监测与调度技术研究

网络流量监测与调度技术研究 网络流量监测与调度技术研究学习目标&#xff1a;流量监测学习内容&#xff1a;流量监测 流量监测的设计框架框架一框架二框架三 申明&#xff1a; 未经许可&#xff0c;禁止以任何形式转载&#xff0c;若要引用&#xff0c;请标注链接地址。 全文共…