这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
icore4tlvgl_13 [2020/12/08 17:04] zgf 创建 |
icore4tlvgl_13 [2022/04/01 11:13] (当前版本) sean |
||
---|---|---|---|
行 2: | 行 2: | ||
|技术支持电话|**0379-69926675-801**||| | |技术支持电话|**0379-69926675-801**||| | ||
|技术支持邮件|Gingko@vip.163.com||| | |技术支持邮件|Gingko@vip.163.com||| | ||
- | |技术论坛|http://www.eeschool.org||| | ||
^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ||
| V1.0 | 2020-12-3 | yang | 初次建立 | | | V1.0 | 2020-12-3 | yang | 初次建立 | | ||
- | ===== 实验十二:lv_slider滑块 ===== | + | ===== 实验十三:lv_cb复选框 ===== |
- | {{ :icore4t:icore4t_rtt_lvgl_12_1.gif?direct |}} | + | ==== 一、复选框 ==== |
+ | |||
+ | 复选框对象是以按钮的背景构建的,按钮背景还包含选择框和标签,以实现一个经典的复选框。 | ||
+ | |||
+ | 复选框的主要部分称为 **LV_CHECKBOX_PART_BG** 。它是选择框和标签的容器。背景使用所有典型的背景样式属性。 | ||
+ | |||
+ | 选择框是一个 lv_obj 对象,可以被 **LV_CHECKBOX_PART_BULLET** 刷新。选择框会自动继承背景的状态,因此,背景被按下时,选择框也会进入按下状态。 | ||
+ | |||
+ | 标签没有专用部分。由于文本样式属性也是继承背景的,因此可以在背景样式中设置其样式。 | ||
+ | |||
+ | {{ :icore4t:icore4t_rtt_lvgl_13_1.gif?direct |}} | ||
<code c> | <code c> | ||
+ | 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); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | ==== 二、设置文本 ==== | ||
+ | |||
+ | 用户可以通过函数 **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 |}} | ||
+ | |||
+ | <code c> | ||
+ | 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); | ||
+ | } | ||
</code> | </code> | ||