多级菜单 (Multi level)
该控件可用于需要管理复杂层次结构的GUI应用程序,例如嵌套的菜单结构和分层显示对象。使用此控件,开发人员可以灵活地管理和操作多层子窗口,实现特定层次和顺序对象的隐藏和显示,从而增强界面的动态性和交互性。
用法
创建控件
创建函数为 gui_multi_level_create()
。此函数创建并初始化一个新的 gui_multi_level_t
控件实例。
跳转到(层次,索引)
函数为 gui_multi_level_jump()
。此函数便于跳转到多层GUI结构中的特定层次和索引。
示例

在0~2层级中创建多级菜单,根据嵌套结构。
GUI_APP_ENTRY(APP_SETTING)
{
gui_multi_level_t *m0 = gui_multi_level_create(GUI_APP_ROOT_SCREEN, 0, ui_design_0);//main
gui_multi_level_t *m1_0 = gui_multi_level_create(m0, 0, ui_design_1_0);//mydevice
gui_multi_level_t *m1_1 = gui_multi_level_create(m0, 0, ui_design_1_1);//battery
gui_multi_level_t *m1_2 = gui_multi_level_create(m0, 0, ui_design_1_2);//bluetooth
gui_multi_level_t *m2_0 = gui_multi_level_create(m1_0, 0, ui_design_2_0);//rename
gui_multi_level_t *m2_1 = gui_multi_level_create(m1_0, 0, ui_design_2_1);//storage
}
ui_design_xx 函数将在显示特定(层次,索引)多层窗口时创建显示内容。
#define HIGHLIGHT_BLUE gui_rgb(0, 100, 255)
struct button_args
{
gui_multi_level_t *parent;
unsigned char index;
unsigned char level;
};
static void multi_levle_button_cb(gui_obj_t *this, void *event, struct button_args *args)
{
GUI_API(gui_multi_level_t).jump(args->parent, args->level, args->index);
}
static void ui_design_0(gui_obj_t *parent)
{
{
gui_button_t *button = gui_button_create(parent, 0, 0, 454, 100, MYDEVICE_BIN, MYDEVICEHL_BIN, 0, 0,
0);
static struct button_args args;
args.parent = (void *)parent;
args.level = 1;
args.index = 0;
GUI_API(gui_button_t).on_click(button, (gui_event_cb_t)multi_levle_button_cb, &args);
}
{
gui_button_t *button = gui_button_create(parent, 0, 102 * 1, 454, 100, BATTERY_BIN, BATTERYHL_BIN,
0, 0, 0);
static struct button_args args;
args.parent = (void *)parent;
args.level = 1;
args.index = 1;
GUI_API(gui_button_t).on_click(button, (gui_event_cb_t)multi_levle_button_cb, &args);
}
{
gui_button_t *button = gui_button_create(parent, 0, 102 * 2, 454, 100, BLUETOOTH_BIN,
BLUETOOTHHL_BIN, 0, 0, 0);
static struct button_args args;
args.parent = (void *)parent;
args.level = 1;
args.index = 2;
GUI_API(gui_button_t).on_click(button, (gui_event_cb_t)multi_levle_button_cb, &args);
}
gui_return_create(parent, gui_app_return_array,
sizeof(gui_app_return_array) / sizeof(uint32_t *), win_cb, (void *)0);
}
API
Functions
-
gui_multi_level_t *gui_multi_level_create(void *parent, const char *widget_name, void (*ui_design)(gui_obj_t*))
-
Create a multi_level widget.
- 参数:
parent – The father widget nested in.
widget_name – The widget name.
x – The X-axis coordinate.
y – The Y-axis coordinate.
ui_design – Ui_design function pointer.
- 返回:
-
Return the widget object pointer.
-
void gui_multi_level_jump(gui_multi_level_t *this, int level, int index)
-
Jump to a specific multi_level widget.
- 参数:
this – One of the multi_level widgets in app.
level – Specific level. 0,1,2…
index – Index in this level. 0,1,2…
-
gui_multi_level_t *gui_multi_level_get_group(const char *group_name)
-
Get a multi_level widget by group name.
- 参数:
-
group_name – Multi_level widget group name.
- 返回:
-
Return the widget object pointer.
Variables
-
_gui_api_gui_multi_level_t _gui_api_for_gui_multi_level_t
-
struct gui_multi_level_t
-
multi_level structure
-
struct _gui_api_gui_multi_level_t
-
Public Members
-
void (*jump)(gui_multi_level_t *this, int levle, int index)
-
Jump to a specific multi_level widget.
- Param this:
-
One of the multi_level widgets in app.
- Param level:
-
Specific level. 0,1,2…
- Param index:
-
Index in this level. 0,1,2…
-
void (*jump)(gui_multi_level_t *this, int levle, int index)