通知控件

概述

通知控件用于向用户传达提示信息和弹出内容,适用于消息提醒、弹窗对话等场景。包括通知徽章和窗口两个控件。

NotificationBadge

通知徽章控件,显示圆形红点和未读计数,常叠加在图标右上角使用。

效果展示

在线演示

API

函数

说明

egui_view_notification_badge_init(self, core)

初始化徽章

egui_view_notification_badge_init_with_params(self, core, params)

使用参数初始化

egui_view_notification_badge_set_count(self, count)

设置计数

egui_view_notification_badge_get_count(self)

获取计数

egui_view_notification_badge_set_max_display(self, max)

设置最大显示数(超出显示 “N+”)

egui_view_notification_badge_set_badge_color(self, color)

设置徽章背景色

egui_view_notification_badge_set_text_color(self, color)

设置文字颜色

egui_view_notification_badge_set_font(self, font)

设置字体

参数宏

EGUI_VIEW_NOTIFICATION_BADGE_PARAMS_INIT(name, x, y, w, h, count);

结构体字段

字段

类型

说明

count

uint16_t

通知计数

max_display

uint8_t

最大显示数

badge_color

egui_color_t

徽章背景色

text_color

egui_color_t

文字颜色

代码示例

static egui_view_notification_badge_t badge;

EGUI_VIEW_NOTIFICATION_BADGE_PARAMS_INIT(badge_params, 50, 5, 20, 20, 3);

void init_ui(egui_core_t *core)
{
    egui_view_notification_badge_init_with_params(
        EGUI_VIEW_OF(&badge), core, &badge_params);
    egui_view_notification_badge_set_max_display(
        EGUI_VIEW_OF(&badge), 99);
    egui_core_add_user_root_view(core, EGUI_VIEW_OF(&badge));
}

void add_notification(void)
{
    uint16_t cnt = egui_view_notification_badge_get_count(
        EGUI_VIEW_OF(&badge));
    egui_view_notification_badge_set_count(
        EGUI_VIEW_OF(&badge), cnt + 1);
}

void clear_notifications(void)
{
    egui_view_notification_badge_set_count(EGUI_VIEW_OF(&badge), 0);
}

使用说明

  • count 为 0 时,徽章自动隐藏

  • count 超过 max_display 时,显示为 “N+”(如 “99+”)

  • 徽章通常叠加在其他控件上方,通过设置合适的坐标实现定位


Window

窗口控件,继承自 Group,提供带标题栏和内容区域的弹窗容器,支持关闭回调。

效果展示

在线演示

API

函数

说明

egui_view_window_init(self, core)

初始化窗口

egui_view_window_init_with_params(self, core, params)

使用参数初始化

egui_view_window_set_title(self, title)

设置标题文字

egui_view_window_set_header_height(self, height)

设置标题栏高度

egui_view_window_add_content(self, child)

向内容区域添加子控件

egui_view_window_set_on_close(self, callback)

设置关闭回调

参数宏

EGUI_VIEW_WINDOW_PARAMS_INIT(name, x, y, w, h, header_height, title);

结构体字段

字段

类型

说明

title_label

egui_view_label_t

标题标签(内部)

content

egui_view_group_t

内容容器(内部)

header_height

egui_dim_t

标题栏高度

header_color

egui_color_t

标题栏颜色

content_bg_color

egui_color_t

内容区背景色

代码示例

static egui_view_window_t win;
static egui_view_label_t content_label;

EGUI_VIEW_WINDOW_PARAMS_INIT(win_params, 20, 20, 200, 150, 30, "Settings");

static void on_close(egui_view_t *self)
{
    egui_view_set_visible(self, 0);
}

void init_ui(egui_core_t *core)
{
    egui_view_window_init_with_params(EGUI_VIEW_OF(&win), core, &win_params);
    egui_view_window_set_on_close(EGUI_VIEW_OF(&win), on_close);

    egui_view_label_init(EGUI_VIEW_OF(&content_label), core);
    egui_view_set_position(EGUI_VIEW_OF(&content_label), 10, 10);
    egui_view_set_size(EGUI_VIEW_OF(&content_label), 180, 20);
    egui_view_label_set_text(EGUI_VIEW_OF(&content_label), "Window Content");
    egui_view_window_add_content(EGUI_VIEW_OF(&win),
        EGUI_VIEW_OF(&content_label));

    egui_core_add_user_root_view(core, EGUI_VIEW_OF(&win));
}

使用说明

  • Window 内部自动创建标题栏和内容区域,无需手动管理布局

  • 通过 egui_view_window_add_content() 添加的子控件会放入内容区域,坐标相对于内容区域左上角

  • 关闭回调中通常调用 egui_view_set_visible(self, 0) 隐藏窗口

  • 标题栏高度通过 header_height 参数控制,内容区域自动占据剩余空间