| **银杏科技有限公司旗下技术文档发布平台** ||||
|技术支持电话|**0379-69926675-801**|||
|技术支持邮件|Gingko@vip.163.com|||
^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^
| V1.0 | 2020-12-3 | yang | 初次建立 |
===== 实验十三:lv_cb复选框 =====
==== 一、复选框 ====
复选框对象是以按钮的背景构建的,按钮背景还包含选择框和标签,以实现一个经典的复选框。
复选框的主要部分称为 **LV_CHECKBOX_PART_BG** 。它是选择框和标签的容器。背景使用所有典型的背景样式属性。
选择框是一个 lv_obj 对象,可以被 **LV_CHECKBOX_PART_BULLET** 刷新。选择框会自动继承背景的状态,因此,背景被按下时,选择框也会进入按下状态。
标签没有专用部分。由于文本样式属性也是继承背景的,因此可以在背景样式中设置其样式。
{{ :icore4t:icore4t_rtt_lvgl_13_1.gif?direct |}}
void lv_gui_run(void){
lvgl2rtt_init("lcd"); /* 初始化lvgl2rtt */
lv_obj_t * cb = lv_checkbox_create(lv_scr_act(), NULL);
lv_checkbox_set_text(cb, "this is a checkbox");
lv_obj_align(cb, NULL, LV_ALIGN_CENTER, 0, 0);
}
==== 二、设置文本 ====
用户可以通过函数 **lv_checkbox_set_text(cb, "New text")** 修改复选框文本,它将动态分配文本。
若要设置静态文本,请使用 **lv_checkbox_set_static_text(cb, txt)** 。这样,将仅存储文本的指针,并且复选框存在时LVGL不释放该指针。
==== 三、选中 / 取消选中 ====
用户可以通过函数 **lv_checkbox_set_checked(cb, true/false)** 手动选中/取消选中复选框。设置 **true** 将选中该复选框,而 **false** 将取消选中该复选框。
==== 四、禁用复选框 ====
要禁用复选框,请使用 **lv_checkbox_set_disabled(cb)** 。
==== 五、获取 / 设置复选框状态 ====
用户可以使用函数** lv_checkbox_get_state(cb)** 获取当前复选框的状态,也可以使用 **lv_checkbox_set_state(cb, state)** 设置复选框的当前状态。可用状态 **lv_btn_state_t** 有以下几种类型:
* **LV_BTN_STATE_RELEASED**
* **LV_BTN_STATE_PRESSED**
* **LV_BTN_STATE_DISABLED**
* **LV_BTN_STATE_CHECKED_RELEASED**
* **LV_BTN_STATE_CHECKED_PRESSED**
* **LV_BTN_STATE_CHECKED_DISABLED**
=== 六、事件 ===
除了常规事件外,复选框还发送以下特殊事件:
* **LV_EVENT_VALUE_CHANGED** - 切换复选框时发送。
请注意,在非活动状态下与通用输入设备相关的事件(如 **LV_EVENT_PRESSED** )也会被发送。因此用户需要通过 **lv_cb_is_inactive(cb)** 检查复选框状态,以忽略非活动复选框中的事件。
{{ :icore4t:icore4t_rtt_lvgl_13_2.gif?direct |}}
static void event_handler(lv_obj_t * obj, lv_event_t event) /* 回调函数 */
{
if(event == LV_EVENT_VALUE_CHANGED) {
if(lv_checkbox_is_checked(obj) == true){ /* 判断状态 */
lv_label_set_text(label, "Checked"); /* 更新标签内容 */
}else{
lv_label_set_text(label, "Unchecked");
}
}
}
void lv_gui_run(void){
lvgl2rtt_init("lcd"); /* 初始化lvgl2rtt */
lv_obj_t * cb = lv_checkbox_create(lv_scr_act(), NULL); /* 创建复选框 */
lv_checkbox_set_text(cb, "I agree to terms and conditions.");/* 设置复选框文本 */
lv_obj_align(cb, NULL, LV_ALIGN_CENTER, 0, 0); /* 设置复选框位置 */
lv_obj_set_event_cb(cb, event_handler); /* 设置复选框回调函数 */
label = lv_label_create(lv_scr_act(), NULL); /* 创建标签 */
lv_label_set_text(label, "Unchecked");
lv_obj_align(label, NULL, LV_ALIGN_CENTER, 0, 30);
}