🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
UiChatMessageItem.hpp
浏览该文件的文档.
1
12
13#pragma once
14
15#include "AstGlobal.h"
16#include <QWidget>
17#include <QLabel>
18#include <QTextEdit>
19#include <QString>
20
21AST_NAMESPACE_BEGIN
22
23enum class EChatRole;
24
33class AST_UIAI_API UiChatMessageItem : public QWidget
34{
35 Q_OBJECT
36
37public:
42 explicit UiChatMessageItem(EChatRole role,
43 const QString& content = QString(),
44 QWidget* parent = nullptr);
45
46 ~UiChatMessageItem() override;
47 UiChatMessageItem(const UiChatMessageItem&) = delete;
48 UiChatMessageItem& operator=(const UiChatMessageItem&) = delete;
49
51 void setContent(const QString& content);
52
54 void appendHtml(const QString& text);
55
57 EChatRole role() const { return role_; }
58
60 QString content() const;
61
63 static QString roleDisplayName(EChatRole role);
64
65protected:
66 void paintEvent(QPaintEvent* event) override;
67 void resizeEvent(QResizeEvent* event) override;
68
69private Q_SLOTS:
70 void updateContentHeight();
71
72private:
73 void setupUi();
74 void applyRoleStyle();
75
76 EChatRole role_;
77 QLabel* roleLabel_ = nullptr; // 角色标签("你" / "助手")
78 QTextEdit* contentEdit_ = nullptr; // 消息内容(支持富文本)
79 QString accumulatedHtml_{}; // 累积的 HTML(用于流式渲染 setHtml)
80 int cachedDocHeight_ = 0; // 上次计算的文档高度,避免循环
81};
82
85AST_NAMESPACE_END
单条聊天消息气泡部件
定义 UiChatMessageItem.hpp:34
EChatRole role() const
获取消息角色
定义 UiChatMessageItem.hpp:57
EChatRole
消息角色
定义 ChatMessage.hpp:39