Qt实现基于P2P的局域网即时通信系统
目录
Qt实现基于P2P的局域网即时通信系统
(2022.2.14) 已放上 github: 。
Links
参考
完整工程下载
这个 CSDN 的下载包括源码和一个编译好的发布版软件。
如果只要源码,见顶部 github 链接
↑ \uparrow
↑ 。
前期准备
Qt生成release版
在 Qt Creator 左下角改一个设置:
点绿色三角形编译运行过之后,在和工程文件同目录下,有个装着编译出来的可执行文件的文件夹,形如:
里面有两个子文件夹,一个叫
debug
,另一个叫release
,因为先前选了release,故可执行文件在release
那个子目录下,但 里面那个还不想要的release版的将
release
里那个.exe
文件复制到一个 空文件夹 下,如在桌面新建一个叫TomChat
的新文件夹,复制到里面Qt 有个自带的终端(Terminal / Console),应该在开始菜单里可以找到
在终端里更改工作目录到刚刚那个新建的文件夹里,如执行
cd /d C:\Users\Tom\Desktop\TomChat
然后用 Qt 自带的工具
windeployqt
来生成release版,执行windeployqt iTom.exe
( iTom.exe 是那个可执行文件的名字)命令执行完成后,就成功生成了release版,类似于免安装的软件那样,把文件夹拷走就可以用。
用 windeployqt 时可能会弹框说缺少若干个什么什么
.dll
文件的,但去看Qt的目录发现这些.dll
文件其实是有的,我当时是通过 环境变量path中把Qt那条上移到第一条 解决的(之前为了给vim配gcc,添加了codeblocks里mingw的目录进去,不知道是不是跟这有关)#程序架构
登录界面(LoginDialog)
- 最先出现,用于获取用户本次登录所起的用户名,并传递给主界面;
- 主界面(iTom)
- 主界面是一个叫
iTom
的类,主要包含一个 好友列表(FriendList) 、一个退出按钮; - 主界面拥有QUdpSocket、QTcpServer、QTcpSocket,在后台负责广播上线消息(登录时)、广播下线消息(退出时)、回复上线广播(收到别人上线广播后)、统一接收聊天信息并转传给相应的 好友名片(FriendButton) 、接收文件;
- 好友列表(FriendList)
- 朋友列表就是盗版QQ的朋友列表(但没有分组),用于存放 好友名片(FriendButton) ,主要是展示功能;
- 列表里默认有个
Broadcast
的好友名片,用于广播信息;
- 好友名片(FriendButton)
- 好友名片就是像QQ好友列表里展示好友的那种东西,之所以叫
button
是因为继承自
QPushButton
,点击呼出与相应好友的 聊天窗口(ChatWindow) ;
- 聊天窗口(ChatWindow)
- 包含显示聊天信息的显示框、信息编辑框、发送信息按钮、发送文件按钮;
- 聊天窗口 不负责 接收信息,而是来自主界面的转传,但负责发信息、选择并发送文件;
- 广播的窗口 不能 发送文件,所以它的文件发送按钮 被禁用 ;