使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第十二讲)
下拉框的信号
下拉框的通用信号如下图所示:

以下是对信号的说明:
Clicked:如果没有被滚动,在释放时被调用(与长按无关)。
Short Clicked: 对象被按下一小段时间,然后释放。如果被滚动,则不会被调用。
Pressed:对象已被按下。
Pressing:对象正在被按下(在按下期间持续调用)。
Press Lost: 对象仍在被按下,但滑动光标/手指离开对象。
Released:在任何对象释放时被调用。
Value Changed: 对象的值已更改(例如,滑块移动)。
Long Pressed: 对象至少被按下`long_press_time`。如果被滚动,则不会被调用。
Long Pressed Repeat:在每`long_press_repeat_time`(长按重复时间)毫秒后,调用一次。如果被滚动,则不会被调用。
Scroll:滚动中。
Scroll Begin: 滚动开始。事件参数是滚动动画的指针,可以被修改。
Scroll End: 滚动结束。
Focused: 对象获得焦点。
Defocused: 对象失去焦点。
Leave:输入设备离开对象上方的悬停状态。
Hit Test: 执行高级点击测试。
Key:将键发送给对象,用lv_indev_get_key(lv_indev_active());获取键值。
除此之外,下拉框有特有的三个信号分别是:
LV_EVENT_VALUE_CHANGED 在选择新选项或打开/关闭列表时发送。
LV_EVENT_CANCEL 列表关闭时发送
LV_EVENT_READY 打开列表时发送
下拉框的回调函数
添加信号value_changed,设置回调为自定义函数,具体如图所示:

以下是回调的代码:
staticvoidscreen_1_ddlist_1_event_handler (lv_event_t*e)
{
lv_event_code_t code =lv_event_get_code(e);
switch(code){
caseLV_EVENT_VALUE_CHANGED:
{
//获取用户选择的下拉选项,用来进行区分
uint16_t id =lv_dropdown_get_selected(guider_ui.screen_1_ddlist_1);
break;
}
default:
break;
}
}
//设置回调函数声明
voidevents_init_screen_1 (lv_ui*ui)
{
lv_obj_add_event_cb(ui->screen_1_ddlist_1,screen_1_ddlist_1_event_handler,LV_EVENT_ALL,ui);
}
下拉框的常用函数
[1] 创建下拉框
lv_obj_t * lv_dropdown_create(lv_obj_t * parent, const lv_obj_t * copy);
parent:父对象,即下拉框要添加到的容器。
copy:可以是另一个已存在的下拉框对象,用于复制其属性(如果需要)。
[2] 设置下拉框选项
void lv_dropdown_set_options(lv_obj_t * dropdown, const char * options);
dropdown:下拉框对象。
options:选项字符串,每个选项用\n 分隔。
[3] 获取当前选项
int32_t lv_dropdown_get_selected(lv_obj_t * dropdown);
返回值:当前选中的选项的索引(从0 开始),如果没有选中任何项,则返回LV_DROPDOWN_RESULT_NONE。
[4] 设置选中的选项
void lv_dropdown_set_selected(lv_obj_t * dropdown, uint16_t index);
dropdown:下拉框对象。
index:选项的索引(从0 开始)。
[5] 获取下拉框文本
const char * lv_dropdown_get_selected_text(lv_obj_t * dropdown);
返回值:当前选中项的文本字符串。
下一期讲其他控件的基础使用。
本文章由威三学院出品
对课程感兴趣可以私信联系

京公网安备11022902000513号
