滑动控件¶
概述¶
滑动控件允许用户通过拖拽手势在一个范围内选择数值。Slider 是水平直线滑块,ArcSlider 是弧形滑块,Roller 是滚轮选择器(从预定义列表中选择),NumberPicker 是数字选择器(通过上下按钮调整数值)。
Slider¶
水平滑块控件,用户通过拖拽滑块在 0-100 范围内选择数值。
效果展示¶
API¶
函数 |
说明 |
|---|---|
|
初始化 Slider |
|
使用参数初始化 |
|
设置当前值(0-100) |
|
获取当前值 |
|
设置值变化回调 |
参数宏¶
EGUI_VIEW_SLIDER_PARAMS_INIT(name, x, y, w, h, value);
回调原型¶
typedef void (*egui_view_on_value_changed_listener_t)(egui_view_t *self, uint8_t value);
代码示例¶
static egui_view_slider_t slider;
EGUI_VIEW_SLIDER_PARAMS_INIT(slider_params, 0, 0, 165, 30, 60);
static void on_value_changed(egui_view_t *self, uint8_t value)
{
EGUI_LOG_INF("Slider value: %d\n", value);
}
void init_ui(egui_core_t *core)
{
egui_view_slider_init_with_params(EGUI_VIEW_OF(&slider), core, &slider_params);
egui_view_slider_set_on_value_changed_listener(EGUI_VIEW_OF(&slider), on_value_changed);
egui_view_set_margin_all(EGUI_VIEW_OF(&slider), 6);
egui_core_add_user_root_view(core, EGUI_VIEW_OF(&slider));
}
ArcSlider¶
弧形滑块控件,用户通过沿弧线拖拽在 0-100 范围内选择数值,适合圆形表盘风格的 UI。
效果展示¶
API¶
函数 |
说明 |
|---|---|
|
初始化 ArcSlider |
|
使用参数初始化 |
|
设置当前值(0-100) |
|
获取当前值 |
|
设置值变化回调 |
参数宏¶
EGUI_VIEW_ARC_SLIDER_PARAMS_INIT(name, x, y, w, h, value);
回调原型¶
typedef void (*egui_view_on_arc_value_changed_listener_t)(egui_view_t *self, uint8_t value);
代码示例¶
static egui_view_arc_slider_t arc;
EGUI_VIEW_ARC_SLIDER_PARAMS_INIT(arc_params, 0, 0, 92, 92, 60);
static void on_value_changed(egui_view_t *self, uint8_t value)
{
EGUI_LOG_INF("Arc slider value: %d\n", value);
}
void init_ui(egui_core_t *core)
{
egui_view_arc_slider_init_with_params(EGUI_VIEW_OF(&arc), core, &arc_params);
egui_view_arc_slider_set_on_value_changed_listener(EGUI_VIEW_OF(&arc), on_value_changed);
egui_view_set_margin_all(EGUI_VIEW_OF(&arc), 6);
egui_core_add_user_root_view(core, EGUI_VIEW_OF(&arc));
}
Roller¶
滚轮选择器控件,用户通过上下拖拽从预定义的字符串列表中选择一项,带高亮选中行效果。
效果展示¶
API¶
函数 |
说明 |
|---|---|
|
初始化 Roller |
|
使用参数初始化 |
|
设置选项列表 |
|
设置当前选中索引 |
|
获取当前选中索引 |
|
设置选中变化回调 |
参数宏¶
EGUI_VIEW_ROLLER_PARAMS_INIT(name, x, y, w, h, items, item_count, current_index);
回调原型¶
typedef void (*egui_view_on_roller_selected_listener_t)(egui_view_t *self, uint8_t index);
代码示例¶
static egui_view_roller_t roller;
static const char *weekdays[] = {"Mon", "Tue", "Wed", "Thu", "Fri"};
EGUI_VIEW_ROLLER_PARAMS_INIT(roller_params, 0, 0, 140, 70, weekdays, 5, 2);
static void on_selected(egui_view_t *self, uint8_t index)
{
EGUI_LOG_INF("Roller selected: %s (index=%d)\n", weekdays[index], index);
}
void init_ui(egui_core_t *core)
{
egui_view_roller_init_with_params(EGUI_VIEW_OF(&roller), core, &roller_params);
egui_view_roller_set_on_selected_listener(EGUI_VIEW_OF(&roller), on_selected);
egui_view_set_margin_all(EGUI_VIEW_OF(&roller), 6);
egui_core_add_user_root_view(core, EGUI_VIEW_OF(&roller));
}
NumberPicker¶
数字选择器控件,通过上下按钮在指定范围内按步长调整数值。
效果展示¶
API¶
函数 |
说明 |
|---|---|
|
初始化 NumberPicker |
|
使用参数初始化 |
|
设置当前值 |
|
获取当前值 |
|
设置取值范围 |
|
设置步长 |
|
设置值变化回调 |
参数宏¶
EGUI_VIEW_NUMBER_PICKER_PARAMS_INIT(name, x, y, w, h, value, min, max);
回调原型¶
typedef void (*egui_view_on_number_changed_listener_t)(egui_view_t *self, int16_t value);
代码示例¶
static egui_view_number_picker_t picker;
EGUI_VIEW_NUMBER_PICKER_PARAMS_INIT(picker_params, 0, 0, 60, 100, 50, 0, 100);
static void on_value_changed(egui_view_t *self, int16_t value)
{
EGUI_LOG_INF("NumberPicker value: %d\n", value);
}
void init_ui(egui_core_t *core)
{
egui_view_number_picker_init_with_params(EGUI_VIEW_OF(&picker), core, &picker_params);
egui_view_number_picker_set_step(EGUI_VIEW_OF(&picker), 5);
egui_view_number_picker_set_on_value_changed_listener(EGUI_VIEW_OF(&picker), on_value_changed);
egui_view_set_margin_all(EGUI_VIEW_OF(&picker), 6);
egui_core_add_user_root_view(core, EGUI_VIEW_OF(&picker));
}