Qt C++实现局域网聊天

本人作为一个Qt c++萌新,需要一些实战项目练练手,我就使用qt实现了一个局域网聊天小程序,在同一个局域网内的两个进程通过同一个端口进行通信,目前只实现了聊天,文件传输需要后续项目实现。

一、准备

需要c++基础知识,以及qt的基础。这个程序是在Ubuntu环境下编写并测试的,当然Qt作为一个跨平台C++图形用户界面应用程序开发框架,其跨平台特性是非常优秀的。

二、开始

1、安装Qt5,目前官方最新的版本是Qt5.11.2,Qtcreator4.7.6。
Qt C++局域网聊天(一)
选择qt-opensource-linux-x64-5.11.2.run,然后在下载目录下,./qt-opensource-linux-x64-5.11.2.run进行安装,需要创建账号,一般都会安装qt5和qtcreator,然后我安装的是qt5.11.1。qtcreator4.6.2
Qt C++局域网聊天(一)
2、代码
(1)新建一个widget项目
Qt C++局域网聊天(一)
(2)、添加一个c++类,并继承自QDialog,类似于这样。Qt C++局域网聊天(一)
这个类是实现的登录框,下图是类的细节。
Qt C++局域网聊天(一)Qt C++局域网聊天(一)Qt C++局域网聊天(一)
先检查网络,如果连网,那么就可以登录。
Qt C++局域网聊天(一)
Qt C++局域网聊天(一)
lookupHost()函数,将结果给QhostInfo,此处是使用的百度地址。
①okBtnClicked():
Qt C++局域网聊天(一)
(3)在widget类里面实现聊天。
①这是主界面 Qt C++局域网聊天(一)
②类的细节
Qt C++局域网聊天(一)
Qt C++局域网聊天(一)
③ 代码:
这是在构造函数中的connect,upd使用bind之前登录使用的port,使用shareAddress和ReuseAddressHint实现地址和端口的重用。
Qt C++局域网聊天(一)
这是用户进入之后,用户列表添加用户,使用的是QTableWidgetItem
Qt C++局域网聊天(一)
这是用户离开处理,通过退出按钮来触发,如果当前用户大于等于2才退出。
Qt C++局域网聊天(一)
Qt C++局域网聊天(一)
下图是发送和接收函数,
Qt C++局域网聊天(一)
Qt C++局域网聊天(一)
三、最后
最终运行效果如图
Qt C++局域网聊天(一)
登录后进行聊天
Qt C++局域网聊天(一)
然后是退出
Qt C++局域网聊天(一)
四、结语
大致就这样了,这是一个基于UDP的聊天程序,本来是要实现文件传输的,但文件传输应当使用TCP,所以放在后续项目实现。

相关文章: