lvgl浮动窗口怎么写
时间: 2023-05-20 15:02:48 浏览: 749
使用lvgl创建浮动窗口,需要以下步骤:
1. 创建一个主窗口对象。
2. 创建一个按钮对象,当点击该按钮时触发打开浮动窗口的事件。
3. 在按钮的回调函数中,创建一个浮动窗口对象。
4. 在浮动窗口对象中添加需要显示的控件,比如文本标签、按钮等。
5. 在浮动窗口对象中添加关闭按钮,当点击该按钮时关闭浮动窗口。
6. 显示浮动窗口对象。
下面是一个简单的示例代码:
```
// 创建主窗口对象
lv_obj_t * main_win = lv_win_create(lv_scr_act(), NULL);
// 创建按钮对象
lv_obj_t * btn_open_float_win = lv_btn_create(main_win, NULL);
lv_obj_set_pos(btn_open_float_win, 10, 10);
lv_obj_set_size(btn_open_float_win, 100, 50);
lv_obj_t * label = lv_label_create(btn_open_float_win, NULL);
lv_label_set_text(label, "Open Float Win");
lv_btn_set_action(btn_open_float_win, LV_BTN_ACTION_CLICK, btn_open_float_win_cb);
// 按钮回调函数
static void btn_open_float_win_cb(lv_obj_t * btn, lv_event_t event) {
if (event == LV_EVENT_CLICKED) {
// 创建浮动窗口对象
lv_obj_t * float_win = lv_win_create(lv_scr_act(), NULL);
lv_obj_set_size(float_win, 200, 150);
lv_obj_set_pos(float_win, 50, 50);
// 添加控件到浮动窗口对象
lv_obj_t * label = lv_label_create(float_win, NULL);
lv_label_set_text(label, "This is a float win");
lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_MID, 0, 10);
lv_obj_t * btn_close = lv_btn_create(float_win, NULL);
lv_obj_set_size(btn_close, 50, 30);
lv_obj_set_pos(btn_close, 75, 100);
lv_obj_t * label_close = lv_label_create(btn_close, NULL);
lv_label_set_text(label_close, "Close");
lv_btn_set_action(btn_close, LV_BTN_ACTION_CLICK, btn_close_cb);
}
}
// 关闭按钮回调函数
static void btn_close_cb(lv_obj_t * btn, lv_event_t event) {
if (event == LV_EVENT_CLICKED) {
lv_obj_t * float_win = lv_obj_get_parent(lv_obj_get_parent(btn));
lv_obj_del(float_win);
}
}
```
这个示例代码中,创建了一个主窗口对象,以及一个打开浮动窗口的按钮对象。当点击按钮时,会触发回调函数`btn_open_float_win_cb`,该函数中创建了一个浮动窗口对象,并在其中添加了一个文本标签和一个关闭按钮。关闭按钮的回调函数`btn_close_cb`中,删除了浮动窗口对象。
阅读全文