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

(2022.2.14) 已放上 github:iTomxy/TomChat

Links

参考

  1. 初学Qt之——动态增加组件
  2. 基于Qt的类似QQ好友列表抽屉效果的实现
  3. 基于Qt的局域网即时通信系统设计与实现(提供各种版本的源代码)

完整工程下载

Qt实现P2P局域网聊天软件

  • 这个 CSDN 的下载包括源码和一个编译好的发布版软件。
  • 如果只要源码,见顶部 github 链接 ↑ \uparrow

前期准备

  1. Qt实现UDP通信简例
  2. Qt实现TCP通信简例
  3. Qt实现UDP广播简例
  4. Qt实现TCP文件传输例子

Qt生成release版

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值