🛰️航天仿真算法库 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
49 void setContent(const QString& content);
50
52 void appendHtml(const QString& text);
53
55 EChatRole role() const { return role_; }
56
58 QString content() const;
59
61 static QString roleDisplayName(EChatRole role);
62
63protected:
64 void paintEvent(QPaintEvent* event) override;
65 void resizeEvent(QResizeEvent* event) override;
66
67private Q_SLOTS:
68 void updateContentHeight();
69
70private:
71 void setupUi();
72 void applyRoleStyle();
73
74 EChatRole role_;
75 QLabel* roleLabel_ = nullptr; // 角色标签("你" / "助手")
76 QTextEdit* contentEdit_ = nullptr; // 消息内容(支持富文本)
77 QString accumulatedHtml_; // 累积的 HTML(用于流式渲染 setHtml)
78 int cachedDocHeight_ = 0; // 上次计算的文档高度,避免循环
79};
80
83AST_NAMESPACE_END
单条聊天消息气泡部件
定义 UiChatMessageItem.hpp:34
EChatRole role() const
获取消息角色
定义 UiChatMessageItem.hpp:55
EChatRole
消息角色
定义 ChatMessage.hpp:39