复选框 (Checkbox)

复选框主要是让用户进行一些内容选择,或者同意`用户协议`。
## 示例代码
```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") -- 切换按钮 禁用
```

## 事件
复选框获取事件消息一般不是靠点击事件(虽然也可以响应),而是靠 `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)
```

## 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)