一、核心数据结构介绍
1)用户信息(UserTnfo)
用户的属性
2)会话信息(ChatSessionInfo)
用户与用户之间的聊天会话
3)消息信息(Message)
文本消息
图片消息
文件消息
语音消息
文本消息,是正文的字符串;图片、文件、语言消息,正文是一个二进制序列。
表示字符串,必须使用QString;表示二进制数据,必须使用QByteArray。
1.我们要创建目录然后创建文件来表示我们的核心类,model是MVC结构里的模型(qt Creator中不方便直接创建,我们就手动创建model)



2.把c++头文件导入到qt里


3.qt的Cmake自动更新文件内容,编译qt文件所需要的依赖(qt_add_executable)

4.命名空间的约定(我设置的当前约定)
1.如果代码所在文件,就是项目的顶层目录中,就直接使用全局的命名空间(不需要手动设置命名空间)
2.如果代码所在文件,在某个子目录中,此时子目录就是文件的命名空间
5.认识static
普通函数:需要把对象构造出来,才能使用普通的函数
加static的函数:不需要先构造函数就可以调用。
6.认识uuid
UUID这个东西,背后是一套算法,就能生成全球唯一的身份标识。
7.认识qDebug
qDebug 打印字符串的时候, 就会自动加上 " “;
qDebug().noquote()可以去除双引号(”")。
二、将本地新项目推送到gitee已有仓库上
在命令窗口中输入:git init
在 Gitee 中 我们刚刚新建的仓库里,去复制仓库的地址
在命令窗口中输入:git remote add origin 你的仓库地址
在命令窗口中输入:git pull origin master
在命令窗口中输入:git add .
在命令窗口中输入:git commit -m “提交项目”
在命令窗口中输入:git push origin master
三、代码实现
3.1 核心数据结构成员变量设计和工具类设计
#pragma once
#include <QString>
#include <QIcon>
#include <QUuid>
#include <QDateTime>
#include <QFile>
#include <QFileInfo>
#include <QDebug>
//创建命名空间
namespace model {
//////////////////////////////////
/// 工具函数. 后续很多模块可能都要用到
//////////////////////////////////
static inline QString getFileName(const QString& path) {
QFileInfo fileInfo(path);
return fileInfo.fileName();
}
// 封装一个 "宏" 作为打印日志的方式.
#define TAG QString("[%1:%2]").arg(model::getFileName(__FILE__), QString::number(__LINE__))
// #define TAG "[" << __LINE__ << "]"
// qDebug 打印字符串的时候, 就会自动加上 " "
#define LOG() qDebug().noquote() << TAG
// 要求函数的定义如果写在 .h 中, 必须加 static 或者 inline (当然两个都加也可以), 避免链接阶段出现 "函数重定义" 的问题.
static inline QString formatTime(int64_t timestamp) {
// 先把时间戳, 转换成 QDateTime 对象
QDateTime dateTime

最低0.47元/天 解锁文章
1844





