复选框 (Checkbox)

::: hljs-center ![checkbox.png](https://cos.easydoc.net/79463195/files/krtgptwr.png) ::: 复选框主要是让用户进行一些内容选择,或者同意`用户协议`。 ## 示例代码 ```lua -- 复选框回调函数 function event_handler(obj, event) if event == lvgl.EVENT_VALUE_CHANGED then print("State", lvgl.checkbox_is_checked(obj)) end end -- 创建复选框 cb = lvgl.checkbox_create(lvgl.scr_act(), nil) -- 设置标签 lvgl.checkbox_set_text(cb, "I agree to terms and conditions.") -- 设置居中位置 lvgl.obj_align(cb, nil, lvgl.ALIGN_CENTER, 0, 0) -- 设置回调函数 lvgl.obj_set_event_cb(cb, event_handler) ``` ## 创建 通过 `lvgl.checkbox_create` 函数可以创建一个复选框控件。与按钮不同的是,这里文字属于复选框的一部分,不需要额外创建标签来显示文字,因为复选框本身就是按钮和标签组合而成的。 ``` cb = lvgl.checkbox_create(lvgl.scr_act(), nil) ``` ## 使用 复选框主要是让用户进行一些内容选择,或者`同意用户协议`。文本内容是通过 `lvgl.checkbox_set_text` 设置的。 ```lua lvgl.checkbox_set_text(cb, "I agree to terms and conditions.") ``` ## 状态 复选框控件同按钮一样,可以通过设置风格改变状态,有关风格样式的说明可以参考 `样式` 章节,复选框可以设置的状态也有6种: ```lua lvgl.BTN_STATE_RELEASED -- 正常 lvgl.BTN_STATE_PRESSED -- 按下 lvgl.BTN_STATE_DISABLED -- 禁用 lvgl.BTN_STATE_CHECKED_RELEASED -- 切换按钮 释放 lvgl.BTN_STATE_CHECKED_PRESSED -- 切换按钮 按下 lvgl.BTN_STATE_CHECKED_DISABLED -- 切换按钮 禁用 ``` 我们可以遍历打印一下所有状态 ```lua function addBtn(y, s) local cb = lvgl.checkbox_create(lvgl.scr_act(), nil) lvgl.obj_align(cb, nil, lvgl.ALIGN_CENTER, 0, y) lvgl.checkbox_set_text(cb, s) lvgl.checkbox_set_state(cb, lvgl[s]) end addBtn(-100, "BTN_STATE_RELEASED") -- 正常 addBtn(-50 , "BTN_STATE_PRESSED") -- 按下 addBtn(0 , "BTN_STATE_DISABLED") -- 禁用 addBtn(50 , "BTN_STATE_CHECKED_RELEASED") -- 切换按钮 释放 addBtn(100 , "BTN_STATE_CHECKED_PRESSED") -- 切换按钮 按下 addBtn(150 , "BTN_STATE_CHECKED_DISABLED") -- 切换按钮 禁用 ``` ::: hljs-center ![image.png](https://cos.easydoc.net/71161452/files/ks4exf04.png) ::: ## 事件 复选框获取事件消息一般不是靠点击事件(虽然也可以响应),而是靠 `lvgl.EVENT_VALUE_CHANGED` 消息。 ```lua -- 复选框回调函数 function event_handler(obj, event) if event == lvgl.EVENT_VALUE_CHANGED then print("State", lvgl.checkbox_is_checked(obj)) end end lvgl.obj_set_event_cb(cb, event_handler) ``` ::: hljs-center ![jdfw1.gif](https://cos.easydoc.net/71161452/files/ks4lugji.gif) ::: ## API ### lvgl.checkbox_create |调用|lvgl.checkbox_create(par, copy)| |-|-| |功能|创建一个复选框对象| |返回|指向新复选框的指针| |参数|| |par|指向对象的指针, 它将是新复选框的父对象| |copy|指向复选框对象的指针, 如果不为 nil, 则将从其复制新对象| ### lvgl.checkbox_set_text |调用|lvgl.checkbox_set_text(cb, txt)| |-|-| |功能|设置复选框的文本。| |参数|| |cb|指向复选框的指针。| |txt|复选框的文本。| ### lvgl.checkbox_set_checked |调用|lvgl.checkbox_set_checked(cb, checked)| |-|-| |功能|设置复选框的状态| |参数|| |cb|指向复选框对象的指针| |checked|true:选中 false:未选中| ### lvgl.checkbox_set_disabled |调用|lvgl.checkbox_set_disabled(cb)| |-|-| |功能|使复选框处于非活动状态(禁用)| |参数|| |cb|指向复选框对象的指针| ### lvgl.checkbox_set_state |调用|lvgl.checkbox_set_state(cb, state)| |-|-| |功能|设置复选框的状态| |参数|| |cb|指向复选框对象的指针| |state|复选框的新状态| ### lvgl.checkbox_get_text |调用|lvgl.checkbox_get_text(cb)| |-|-| |功能|获取复选框的文本| |返回|指向复选框文本的指针| |参数|| |cb|指向复选框对象的指针| ### lvgl.checkbox_is_checked |调用|lvgl.checkbox_is_checked(cb)| |-|-| |功能|获取复选框的当前状态| |返回|true:选中;false:未选中| |参数|| |cb|指向复选框对象的指针| ### lvgl.checkbox_is_inactive |调用|lvgl.checkbox_is_inactive(cb)| |-|-| |功能|获取复选框是否处于非活动状态。| |返回|true:是 false:否| |参数|| |cb|指向复选框对象的指针| ### lvgl.checkbox_get_state |调用|lvgl.checkbox_get_state(cb)| |-|-| |功能|获取复选框的当前状态| |返回|复选框的状态| |参数|| |cb|指向复选框对象的指针| [参考链接(C语言)](https://docs.lvgl.io/7.11/widgets/checkbox.html)