# ChatUI
**Repository Path**: tsingfu/chat-ui
## Basic Information
- **Project Name**: ChatUI
- **Description**: 基于Qt5.x的仿QQ局域网通讯软件。
目前主要实现了单对单的文字通讯,文件传输,UI界面稍做美化······
- **Primary Language**: C++
- **License**: LGPL-2.1
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2024-12-22
- **Last Updated**: 2024-12-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ChatUI
#### 介绍
基于Qt5.x的仿QQ局域网通讯软件。
目前主要实现的功能有:
1. 单对单的文字、图片通讯(半成品)
2. 单对单的文件传输
3. 好友头像,网名的自动更新
4. 对于聊天记录,好友信息的数据库存储管理
5. 用户对好友信息和聊天信息管理
6. 聊天界面的简单美化(用户也可以自己尝试添加设置皮肤)
7. 好友上线、离线的简单提醒
8. 用户可以自行对个人信息及文件传输配置进行修改管理
#### 软件架构
1. 界面模块
目录window下文件实现
使用QtWidget和Qt设计师做界面设计,用qss做部分的界面美化(做的不好)
目前有主界面和聊天界面两个模块
用户双击具体的好友后创建与选中好友的聊天界面
界面之间用信号与槽进行通信
2. 通信模块
由目录network下MessageSocket类实现
使用QUdpSocket实现局域网通信
用户登录、退出时使用广播通知所有在线用户
在线用户收到用户登录消息后,使用Udp单播对登录用户发送响应登录信息(告知用户自己在线)
通过QUdpSocket单播进行通信,收到消息后发送对应信号
3. 文件传输模块
由目录network下FileReader类和FileSender类实现
使用QTcpSocket和QTcpServer实现文件传输功能
用户选择要发送的文件,发送或接收完成后通知用户
4. 数据存储模块
由目录likeDatabase下LikeDatabase类实现
使用Sqlite数据库对好友信息和聊天信息进行增、删、改、查
5. 配置管理模块
由目录config下GlobalConfig类实现
使用QStting对部分用户配置和软件配置进行存储和管理
#### 安装教程
1. 下载到本地后用QtCreator打开
2. 删除***ChatUI.pro.user***文件
3. 选中***ChatUI.pro***运行
4. 把***globalConfig.ini***文件复制到Debug目录下,再次运行,完成
5. 可以尝试自己写皮肤文件然后保存为后缀为***qss***的文件,然后在主界面上点击更换皮肤,选中自己的皮肤文件,查看效果,***testStyle.qss***是我的测试文件
#### 使用说明
收发图片需要在双方都打通聊天窗口时才可进行,因为没有接收的图片做本地存储。
因为通信使用Udp传输,并且没有增加消息验证和制发机制所以收发图片有时会产生错误!



#### 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request
#### 特技
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)