目录

Qt实现基于P2P的局域网即时通信系统

Qt实现基于P2P的局域网即时通信系统

(2022.2.14) 已放上 github: 。

参考

完整工程下载

  • 这个 CSDN 的下载包括源码和一个编译好的发布版软件。

  • 如果只要源码,见顶部 github 链接

    ↑ \uparrow

    ↑ 。

前期准备

Qt生成release版

  1. 在 Qt Creator 左下角改一个设置:

    https://i-blog.csdnimg.cn/blog_migrate/a05c2aeaa3a7b0936f69ab151f411cc8.png

  2. 点绿色三角形编译运行过之后,在和工程文件同目录下,有个装着编译出来的可执行文件的文件夹,形如:

    https://i-blog.csdnimg.cn/blog_migrate/70ecfb1ba800630bca04750b346212fd.png

    里面有两个子文件夹,一个叫 debug ,另一个叫 release ,因为先前选了release,故可执行文件在 release 那个子目录下,但 里面那个还不想要的release版的

  3. release 里那个 .exe 文件复制到一个 空文件夹 下,如在桌面新建一个叫 TomChat 的新文件夹,复制到里面

  4. Qt 有个自带的终端(Terminal / Console),应该在开始菜单里可以找到

    https://i-blog.csdnimg.cn/blog_migrate/06086d66bc0f252dfe421fa683668d22.png

  5. 在终端里更改工作目录到刚刚那个新建的文件夹里,如执行

    cd /d C:\Users\Tom\Desktop\TomChat

    然后用 Qt 自带的工具 windeployqt 来生成release版,执行

    windeployqt iTom.exeiTom.exe 是那个可执行文件的名字)

    命令执行完成后,就成功生成了release版,类似于免安装的软件那样,把文件夹拷走就可以用。 https://i-blog.csdnimg.cn/blog_migrate/7568ae3575b3f9ba187e9bba8508baa2.png

    windeployqt 时可能会弹框说缺少若干个什么什么 .dll 文件的,但去看Qt的目录发现这些 .dll 文件其实是有的,我当时是通过 环境变量path中把Qt那条上移到第一条 解决的(之前为了给vim配gcc,添加了codeblocks里mingw的目录进去,不知道是不是跟这有关)

    https://i-blog.csdnimg.cn/blog_migrate/ba5262828632e103e1323da2e144abb4.png

    #程序架构

  6. 登录界面(LoginDialog)

  • 最先出现,用于获取用户本次登录所起的用户名,并传递给主界面;
  1. 主界面(iTom)
  • 主界面是一个叫 iTom 的类,主要包含一个 好友列表(FriendList) 、一个退出按钮;
  • 主界面拥有QUdpSocket、QTcpServer、QTcpSocket,在后台负责广播上线消息(登录时)、广播下线消息(退出时)、回复上线广播(收到别人上线广播后)、统一接收聊天信息并转传给相应的 好友名片(FriendButton) 、接收文件;
  1. 好友列表(FriendList)
  • 朋友列表就是盗版QQ的朋友列表(但没有分组),用于存放 好友名片(FriendButton) ,主要是展示功能;
  • 列表里默认有个 Broadcast 的好友名片,用于广播信息;
  1. 好友名片(FriendButton)
  • 好友名片就是像QQ好友列表里展示好友的那种东西,之所以叫 button 是因为继承自 QPushButton ,点击呼出与相应好友的 聊天窗口(ChatWindow)
  1. 聊天窗口(ChatWindow)
  • 包含显示聊天信息的显示框、信息编辑框、发送信息按钮、发送文件按钮;
  • 聊天窗口 不负责 接收信息,而是来自主界面的转传,但负责发信息、选择并发送文件;
  • 广播的窗口 不能 发送文件,所以它的文件发送按钮 被禁用