(2022.2.14) 已放上 github:iTomxy/TomChat。
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)
- 包含显示聊天信息的显示框、信息编辑框、发送信息按钮、发送文件按钮;
- 聊天窗口不负责接收信息,而是来自主界面的转传,但负责发信息、选择并发送文件;
- 广播的窗口不能发送文件,所以它的文件发送按钮被禁用;