QT6谈天室项目 核心类与主窗口操持逻辑分析

[复制链接]
发表于 2026-2-4 10:09:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
核心类

核心类操持逻辑

   数据结构操持(data.h)
  
       
  • 用户信息
           
    • 用户ID     
    • 用户网名     
    • 用户个人署名     
    • 用户手机号码     
    • 用户头像   
       
  • 谈天会话信息
           
    • 会话编号     
    • 会话名称(单聊则是对方网名,群聊则是群名)     
    • 最新消息     
    • 会话图标(单聊对方头像,群聊则群聊头像)     
    • 判断单聊还是群聊   
       
  • 消息信息
           
    • 消息范例
              
      • 文本消息      
      • 图片消息      
      • 文件消息      
      • 语音消息      
           
    • 消息的编号     
    • 消息所属文件的编号     
    • 消息的时间     
    • 发送者的信息     
    • 消息内容     
    • 文件的消息身份标识(除文本消息外,其他消息收效)     
    • 文件名称(只有文件消息的时间有效,由于文件消息是不必要及时表现)   
      
  工厂操持模式构建消息信息
  
       
  • 目的:根据消息范例,返回一个对应的消息范例的信息   
  • 类中成员函数分析
           
    • makeId:使用uuID创建一个唯一的ID标识   
      
  1. namespace model
  2. {
  3.     //用户信息
  4.     class UserInfo
  5.     {
  6.     public:
  7.         QString userId = "";                        // 用户编号
  8.         QString nickname = "";                        // 用户昵称
  9.         QString description = "";                 // 用户签名
  10.         QString phone = "";                                // 手机号码
  11.         QIcon avatar;                                        // 用户头像
  12.     };
  13.     //消息信息
  14.     enum MessageType{
  15.         TEXT_TYPE,                // 文本消息
  16.         IMAGE_TYPE,         // 图片消息
  17.         FILE_TYPE,                 // 文件消息
  18.         SPEECH_TYPE         // 语音消息
  19.     };
  20.     class Message{
  21.     public:
  22.         QString messageId = "";                                // 消息编号
  23.         QString chatSessionId = "";                        // 消息所属会话编号
  24.         QString time = "";                                        // 消息时间
  25.         MessageType messageType = TEXT_TYPE;// 消息类型
  26.         UserInfo sender;                                        // 发送者的信息
  27.         QByteArray content;                                        // 消息的正文内容
  28.         QString fileId = "";                                // 文件的身份标识
  29.         QString fileName = "";                                 // 文件名称
  30.         
  31.         //获取指定类型的消息信息
  32.         static Message makeMessage(MessageType messageType,const QString&chatSessionId,const UserInfo&sender,
  33.                                   const QByteArray&content,const QString&extraInfo)
  34.         {
  35.             if (messageType == TEXT_TYPE) {
  36.                 return makeTextMessage(chatSessionId, sender, content);
  37.             } else if (messageType == IMAGE_TYPE) {
  38.                 return makeImageMessage(chatSessionId, sender, content);
  39.             } else if (messageType == FILE_TYPE) {
  40.                 return makeFileMessage(chatSessionId, sender, content, extraInfo);
  41.             } else if (messageType == SPEECH_TYPE) {
  42.                 return makeSpeechMessage(chatSessionId, sender, content);
  43.             } else {
  44.                 // 触发了未知的消息类型
  45.                 return Message();
  46.             }
  47.         }
  48.     };
  49.     //会话消息
  50.     class ChatSessionInfo{
  51.     pu
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表