目的
學習使用複選框。
功能描述
同其他ui的複選框一樣,littlevGL也提供了一個複選框功能。用戶可以配置複選框的風格,文本,以及事件回調的應答任務。
控件創建步驟及函數
創建步驟
用戶可以創建一個複選框對象,並配置對應的文本。此文本不能是局部變量。可配置複選框的初始狀態,是否有效,以及風格和對應事件。
函數
-
控件創建
lv_obj_t *lv_cb_create(lv_obj_t *par, constlv_obj_t *copy)
-
設置控件文本
void lv_cb_set_text(lv_obj_t *cb, const char *txt)//指向動態的
void lv_cb_set_static_text(lv_obj_t *cb, const char *txt)//靜態的
const char *lv_cb_get_text(constlv_obj_t *cb)
-
設置控件的選擇狀態
static void lv_cb_set_checked(lv_obj_t *cb, bool checked)//控制控件選取狀態
static bool lv_cb_is_checked(constlv_obj_t *cb)
-
是否使能控件
static void lv_cb_set_inactive(lv_obj_t *cb)//設置控件無效
static bool lv_cb_is_inactive(constlv_obj_t *cb)
-
配置控件風格
void lv_cb_set_style(lv_obj_t *cb, lv_cb_style_ttype, const lv_style_t *style)
LV_CB_STYLE_BG Background style. Uses all style.body properties. The label’s style comes from style.text. Default: lv_style_transp
LV_CB_STYLE_BOX_REL Style of the released box. Uses the style.body properties. Default: lv_style_btn_rel
LV_CB_STYLE_BOX_PR Style of the pressed box. Uses the style.body
LV_CB_STYLE_BOX_INA Style of the inactive box. Uses the style.body properties. Default: lv_style_btn_ina
const lv_style_t *lv_cb_get_style(constlv_obj_t *cb, lv_cb_style_ttype)
-
事件
lv_obj_set_event_cb(cb, event_handler)
LV_EVENT_VALUE_CHANGED//事件類型
案例和代碼
實現一個複選框,配置其事件,打印當前按下和釋放的狀態。
#include "ljy_check.h"
#include "lvgl/lvgl.h"
#include <stdio.h>
static void CheckBoxEventCb(lv_obj_t * obj, lv_event_t event)
{
if(event == LV_EVENT_VALUE_CHANGED) {
printf("State: %s\n", lv_cb_is_checked(obj) ? "Checked" : "Unchecked");
lv_cb_is_checked(obj)? lv_cb_set_text(obj, "OK"):lv_cb_set_text(obj, "unok");//切換txt
}
}
void DrawCheckBox()
{
//1. 創建一個cb0
lv_obj_t * cb = lv_cb_create(lv_scr_act(), NULL);
//2. 配置文本
lv_cb_set_text(cb, "Agree");
//3. 顯示中心
lv_obj_align(cb, NULL, LV_ALIGN_CENTER, 0, 0);
//4. 回調事件
lv_obj_set_event_cb(cb, CheckBoxEventCb);
}
結論
初始界面
操作界面