/**
* @file lv_mainstart.c
* @author lixi
* @version V1.0
* @date 2024-4-20
* @brief LVGL_main_win
* @license XAUAT
*/
#include "lv_mainstart.h"
#include "lvgl.h"
#include <stdio.h>
/* 获取当前活动屏幕的宽高 */
#define scr_act_width() lv_obj_get_width(lv_scr_act())
#define scr_act_height() lv_obj_get_height(lv_scr_act())
//内部字库声明
LV_FONT_DECLARE(myFont) //最新字库20号字体
LV_FONT_DECLARE(myFont_12) //最新字库12号字体
/***********************************************************存取界面变量定义*************************************************************************/
//存取界面父对象
static lv_obj_t *cq_parent_obj; //创建父对象
//存取界面抬头标签
lv_obj_t *cq_label_0;
//存取界面搜索框
lv_obj_t *cq_txtarea_suosou;
//存取界面搜索标签
lv_obj_t *cq_label_sousuo;
//存取界面搜索按钮
lv_obj_t *cq_btn_sousuo;
//存取界面键盘-搜索
lv_obj_t *cq_keyboard;
//存取界面矩阵按钮
lv_obj_t *cq_btnm;
/* 按钮矩阵数组 */
static const char *cq_num_map[] = { "1", "2", "3","4", "5" ,"\n",
"6","7", "8", "9","10" ,"\n",
"" };
//存取界面标签
static lv_obj_t *cq_label_num; //文本标签,物料编号
static lv_obj_t *cq_label_leixing; //文本标签,物料类型
static lv_obj_t *cq_label_fengzhuang; //文本标签,物料封装
static lv_obj_t *cq_label_number; //文本标签,物料数目
//存取界面文本框
static lv_obj_t *cq_txtarea_num; //文本区域,物料编号
static lv_obj_t *cq_txtarea_leixing; //文本区域,物料类型
static lv_obj_t *cq_txtarea_fengzhuang; //文本区域,物料封装
static lv_obj_t *cq_txtarea_number; //文本区域,物料数目
//存取界面存取按钮
lv_obj_t *cq_label_cunru; //按钮标签,存入
lv_obj_t *cq_btn_cunru; //按钮,存入
lv_obj_t *cq_label_quchu; //按钮标签,取出
lv_obj_t *cq_btn_quchu; //按钮,取出
/**********************************************************存取界面回调函数****************************************************************************/
/**
* @brief 搜索按框回调
* @param *e :事件相关参数的集合,它包含了该事件的所有数据
* @return 无
*/
static void cq_txtarea_event_cb(lv_event_t * e)
{
lv_event_code_t code = lv_event_get_code(e); /* 获取事件类型 */
lv_obj_t *target = lv_event_get_target(e); /* 获取触发源 */
/*搜索框*/
if(target == cq_txtarea_suosou) /*物料编号框被触发*/
{
if(code == LV_EVENT_FOCUSED) /* 事件类型:被聚焦 */
{
printf("cq_txtarea_suosou ok\r\n");
/* 键盘 */
cq_keyboard = lv_keyboard_create(cq_parent_obj); /* 创建键盘 */
lv_obj_set_size(cq_keyboard, scr_act_width(), scr_act_height()*3/5); /* 设置大小 */
lv_keyboard_set_textarea(cq_keyboard, cq_txtarea_suosou); /* 关联搜索文本框和键盘 */
}
}
}
/**
* @brief 搜索按钮回调
* @param *e :事件相关参数的集合,它包含了该事件的所有数据
* @return 无
*/
static void cq_btn_event_cb_baocun(lv_event_t * e)
{
lv_event_code_t code = lv_event_get_code(e); /* 获取事件类型 */
lv_obj_t *target = lv_event_get_target(e); /* 获取触发源 */
if (target == cq_btn_sousuo)
{
printf("cq_btn_sousuo is press\r\n");
/*关闭搜索框关联的键盘*/
/*判断输入信息,C开头+数字(编号),将获取的文本框信息数组与结构体编号数据对比,返回对应句柄,显示对应信息*/
}
}
/**
* @brief 按钮矩阵事件回调
* @param *e :事件相关参数的集合,它包含了该事件的所有数据
* @return 无
*/
static void cq_btnm_event_cb(lv_event_t* e)
{
uint8_t id;
lv_event_code_t code = lv_event_get_code(e); /* 获取事件类型 */
lv_obj_t *target = lv_event_get_target(e); /* 获取触发源 */
if (code == LV_EVENT_VALUE_CHANGED)
{
id = lv_btnmatrix_get_selected_btn(target)+1; /* 获取按键索引 */
printf("id:%d\r\n",id);
// lv_label_set_text(label_input, lv_btnmatrix_get_btn_text(target, id)); /* 更新输入框标签文本 */
// lv_obj_align_to(label_input, obj_input, LV_ALIGN_CENTER, 0, 0); /* 设置标签位置 */
}
}
/**
* @brief 存入按钮回调
* @param *e :事件相关参数的集合,它包含了该事件的所有数据
* @return 无
*/
static void cq_btn_event_cb_cunru(lv_event_t * e)
{
lv_event_code_t code = lv_event_get_code(e); /* 获取事件类型 */
lv_obj_t *target = lv_event_get_target(e); /* 获取触发源 */
if (target == cq_btn_sousuo)
{
printf("cq_btn_sousuo is press\r\n");
/*关闭搜索框关联的键盘*/
/*判断输入信息,C开头+数字(编号),将获取的文本框信息数组与结构体编号数据对比,返回对应句柄,显示对应信息*/
}
}
/**
* @brief 取出按钮回调
* @param *e :事件相关参数的集合,它包含了该事件的所有数据
* @return 无
*/
static void cq_btn_event_cb_quchu(lv_event_t * e)
{
lv_event_code_t code = lv_event_get_code(e); /* 获取事件类型 */
lv_obj_t *target = lv_event_get_target(e); /* 获取触发源 */
if (target == cq_btn_sousuo)
{
printf("cq_btn_sousuo is press\r\n");
/*关闭搜索框关联的键盘*/
/*判断输入信息,C开头+数字(编号),将获取的文本框信息数组与结构体编号数据对比,返回对应句柄,显示对应信息*/
}
}
/********************************************************存取界面抬头文本*************************************************/
/**
* @brief 创建存取界面父对象
* @param 无
* @return 无
*/
void lv_cq_parent (void)
{
/* 父对象 */
cq_parent_obj = lv_obj_create(lv_scr_act()); /* 创建父对象 */
lv_obj_set_size(cq_parent_obj, scr_act_width(), scr_act_height()); /* 设置父对象的大小 */
lv_obj_set_style_bg_color(cq_parent_obj, lv_palette_main(LV_PALETTE_BLUE), 0); /* 设置父对象的背景色:主题蓝 */
}
/**
* @brief 文本标签"存取物料"
* @param 无
* @return 无
*/
void lv_cq_label_0 (void)
{
cq_label_0 = lv_label_create(cq_parent_obj); /*创建文本标签*/
lv_obj_set_style_text_font(cq_label_0,&myFont,LV_STATE_DEFAULT); /*设置标签字体*/
lv_label_set_text(cq_label_0, "存 取 物 料"); /*设置表标签文本*/
lv_obj_align(cq_label_0,LV_ALIGN_TOP_MID,0,0); /*设置标签位置*/
}
/********************************************************存取界面搜索按钮和文本框*************************************************/
/**
* @brief 搜索框
* @param 无
* @return 无
*/
void lv_cq_txtarea_sousuo (void)
{
cq_txtarea_suosou = lv_textarea_create(cq_parent_obj); /* 创建文本框 */
lv_obj_set_width(cq_txtarea_suosou, scr_act_width()*2/3); /* 设置宽度 */
lv_obj_set_style_text_font(cq_txtarea_suosou, &myFont_12, LV_PART_MAIN); /* 设置字体 */
lv_obj_align(cq_txtarea_suosou,LV_ALIGN_TOP_MID, -25,60); /* 设置位置 */
lv_textarea_set_one_line(cq_txtarea_suosou, true); /* 设置单行模式 */
// lv_textarea_set_max_length(cq_txtarea_suosou, 6); /* 设置输入字符的最大长度 */
// lv_textarea_set_placeholder_text(cq_txtarea_suosou, "LQF-100"); /* 设置占位符 */
lv_obj_add_event_cb(cq_txtarea_suosou, cq_txtarea_event_cb, LV_EVENT_ALL, NULL); /* 添加文本框事件回调 */
}
/**
* @brief 搜索按钮
* @param 无
* @return 无
*/
void lv_cq_btn_sousuo (void)
{
//保存按钮
cq_btn_sousuo = lv_btn_create(cq_parent_obj); /* 创建按钮1 */
lv_obj_set_size(cq_btn_sousuo, scr_act_width() / 9, scr_act_height() / 9); /* 设置按钮大小 */
lv_obj_align(cq_btn_sousuo, LV_ALIGN_TOP_RIGHT,-45,55); /* 设置按钮位置 */
lv_obj_set_style_bg_color(cq_btn_sousuo, lv_color_hex(0xf4b183), LV_STATE_DEFAULT); /*设置按钮颜色*/
lv_obj_add_event_cb(cq_btn_sousuo, cq_btn_event_cb_baocun, LV_EVENT_CLICKED, NULL); /* 设置按钮事件 */
cq_label_sousuo = lv_label_create(cq_btn_sousuo); /* 创建搜索按钮标签 */
lv_obj_set_style_text_font(cq_label_sousuo,&myFont,LV_STATE_DEFAULT); /* 设置字体 */
lv_label_set_text(cq_label_sousuo, "搜索"); /* 设置文本*/
lv_obj_set_align(cq_label_sousuo,LV_ALIGN_CENTER); /*对按钮部件进行对齐*/
}
/********************************************************存取界面矩阵按钮*************************************************/
/**
* @brief 存取界面矩阵按钮
* @param 无
* @return 无
*/
static void lv_cq_btnmatrix(void)
{
/* 按钮矩阵(创建) */
cq_btnm = lv_btnmatrix_create(cq_parent_obj); /* 创建按钮矩阵 */
lv_obj_set_size(cq_btnm, scr_act_width(), scr_act_width()/4); /* 设置大小 */
lv_btnmatrix_set_map(cq_btnm, cq_num_map); /* 设置按钮 */
lv_obj_align(cq_btnm, LV_ALIGN_CENTER, 0, -30); /* 设置位置 */
lv_obj_set_style_text_font(cq_btnm, &myFont, LV_PART_ITEMS); /* 设置字体 */
/* 按钮矩阵(优化界面) */
lv_obj_set_style_border_width(cq_btnm, 0, LV_PART_MAIN); /* 去除主体边框 */
lv_obj_set_style_bg_opa(cq_btnm, 0, LV_PART_MAIN); /* 设置主体背景透明度 */
// lv_obj_set_style_bg_opa(cq_btnm, 0, LV_PART_ITEMS); /* 设置按钮背景透明度 */
lv_obj_set_style_shadow_width(cq_btnm, 0, LV_PART_ITEMS); /* 去除按钮阴影 */
lv_obj_add_event_cb(cq_btnm, cq_btnm_event_cb, LV_EVENT_VALUE_CHANGED, NULL); /* 设置按钮矩阵回调 */
}
/*************************************************信息显示界面******************************************************************/
/**
* @brief 文本标签"编号"
* @param 无
* @return 无
*/
void lv_label_num (void)
{
cq_label_num = lv_label_create(cq_parent_obj); /*创建文本标签*/
lv_obj_set_style_text_font(cq_label_num,&myFont,LV_STATE_DEFAULT); /*设置标签字体*/
lv_label_set_text(cq_label_num, "物号:"); /*设置表标签文本*/
lv_obj_align(cq_label_num,LV_ALIGN_LEFT_MID,scr_act_width()/12,scr_act_height()/10); /*设置标签位置*/
}
///**
// * @brief 文本标签"类型"
// * @param 无
// * @return 无
// */
//void lv_label_leixing (void)
//{
// cq_label_leixing = lv_label_create(cq_parent_obj); /*创建文本标签*/
// lv_obj_set_style_text_font(cq_label_leixing,&myFont,LV_STATE_DEFAULT); /*设置标签字体*/
// lv_label_set_text(cq_label_leixing, "类型:"); /*设置表标签文本*/
// lv_obj_align_to(cq_label_leixing,cq_label_num,LV_ALIGN_OUT_BOTTOM_LEFT,0,30); /*设置标签位置*/
//}
//
///**
// * @brief 文本标签"封装"
// * @param 无
// * @return 无
// */
//void lv_label_fengzhuang (void)
//{
// cq_label_fengzhuang = lv_label_create(cq_parent_obj); /*创建文本标签*/
// lv_obj_set_style_text_font(cq_label_fengzhuang,&myFont,LV_STATE_DEFAULT); /*设置标签字体*/
// lv_label_set_text(cq_label_fengzhuang, "封装:"); /*设置表标签文本*/
// lv_obj_align_to(cq_label_fengzhuang,cq_label_leixing,LV_ALIGN_OUT_BOTTOM_LEFT,0,30); /*设置标签位置*/
//}
/**
* @brief 文本标签"物料数目"
* @param 无
* @return 无
*/
void lv_label_number (void)
{
cq_label_number = lv_label_create(cq_parent_obj); /*创建文本标签*/
lv_obj_set_style_text_font(cq_label_number,&myFont,LV_STATE_DEFAULT); /*设置标签字体*/
lv_label_set_text(cq_label_number, "物料数:"); /*设置表标签文本*/
lv_obj_align_to(cq_label_number,cq_label_num,LV_ALIGN_OUT_BOTTOM_LEFT,0,30); /*设置标签位置*/
}
/**
* @brief 文本区域“编号”
* @param 无
* @return 无
*/
void lv_txtarea_num (void)
{
cq_txtarea_num = lv_textarea_create(cq_parent_obj); /* 创建文本框 */
lv_obj_set_width(cq_txtarea_num, scr_act_width()/2); /* 设置宽度 */
lv_obj_set_style_text_font(cq_txtarea_num, &myFont_12, LV_PART_MAIN); /* 设置字体 */
lv_obj_align_to(cq_txtarea_num,cq_label_num, LV_ALIGN_OUT_RIGHT_TOP, 20,-14); /* 设置位置 */
lv_textarea_set_one_line(cq_txtarea_num, true); /* 设置单行模式 */
// lv_textarea_set_max_length(cq_txtarea_num, 6); /* 设置输入字符的最大长度 */
// lv_textarea_set_placeholder_text(cq_txtarea_num, "编号以'C'开头,加上数字"); /* 设置占位符 */
// lv_obj_add_event_cb(cq_txtarea_num, txtarea_event_cb, LV_EVENT_ALL, NULL); /* 添加文本框事件回调 */
}
///**
// * @brief 文本区域“类型”
// * @param 无
// * @return 无
// */
//void lv_txtarea_leixing (void)
//{
//
// cq_txtarea_leixing = lv_textarea_create(cq_parent_obj); /* 创建文本框 */
// lv_obj_set_width(cq_txtarea_leixing, scr_act_width()/2); /* 设置宽度 */
// lv_obj_set_style_text_font(cq_txtarea_leixing, &myFont_12, LV_PART_MAIN); /* 设置字体 */
// lv_obj_align_to(cq_txtarea_leixing,cq_label_leixing, LV_ALIGN_OUT_RIGHT_TOP, 20,-14); /* 设置位置 */
// lv_textarea_set_one_line(cq_txtarea_leixing, true); /* 设置单行模式 */
lv_textarea_set_max_length(cq_txtarea_leixing, 6); /* 设置输入字符的最大长度 */
lv_textarea_set_placeholder_text(cq_txtarea_leixing, "'R''C''D''U'"); /* 设置占位符 */
lv_obj_add_event_cb(cq_txtarea_leixing, txtarea_event_cb, LV_EVENT_ALL, NULL); /* 添加文本框事件回调 */
//}
//
//
///**
// * @brief 文本区域“封装”
// * @param 无
// * @return 无
// */
//void lv_txtarea_fengzhuang (void)
//{
//
// cq_txtarea_fengzhuang = lv_textarea_create(cq_parent_obj); /* 创建文本框 */
// lv_obj_set_width(cq_txtarea_fengzhuang, scr_act_width()/2); /* 设置宽度 */
// lv_obj_set_style_text_font(cq_txtarea_fengzhuang, &myFont_12, LV_PART_MAIN); /* 设置字体 */
// lv_obj_align_to(cq_txtarea_fengzhuang,cq_label_fengzhuang, LV_ALIGN_OUT_RIGHT_TOP, 20,-14); /* 设置位置 */
// lv_textarea_set_one_line(cq_txtarea_fengzhuang, true); /* 设置单行模式 */
lv_textarea_set_max_length(cq_txtarea_fengzhuang, 6); /* 设置输入字符的最大长度 */
lv_textarea_set_placeholder_text(cq_txtarea_fengzhuang, "LQF-100"); /* 设置占位符 */
lv_obj_add_event_cb(cq_txtarea_fengzhuang, txtarea_event_cb, LV_EVENT_ALL, NULL); /* 添加文本框事件回调 */
//}
/**
* @brief 文本区域“物料数量”
* @param 无
* @return 无
*/
void lv_txtarea_number (void)
{
cq_txtarea_number = lv_textarea_create(cq_parent_obj); /* 创建文本框 */
lv_obj_set_width(cq_txtarea_number, scr_act_width()/10); /* 设置宽度 */
lv_obj_set_style_text_font(cq_txtarea_number, &myFont_12, LV_PART_MAIN); /* 设置字体 */
lv_obj_align_to(cq_txtarea_number,cq_label_number, LV_ALIGN_OUT_RIGHT_TOP, 20,-14); /* 设置位置 */
lv_textarea_set_one_line(cq_txtarea_number, true); /* 设置单行模式 */
// lv_textarea_set_max_length(cq_txtarea_number, 6); /* 设置输入字符的最大长度 */
// lv_textarea_set_placeholder_text(cq_txtarea_number, "数"); /* 设置占位符 */
// lv_obj_add_event_cb(cq_txtarea_number, txtarea_event_cb, LV_EVENT_ALL, NULL); /* 添加文本框事件回调 */
}
/************************************************************存取按钮****************************************************************/
/**
* @brief 存入按钮
* @param 无
* @return 无
*/
void lv_cq_btn_cunru (void)
{
//保存按钮
cq_btn_cunru = lv_btn_create(cq_parent_obj); /* 创建按钮1 */
lv_obj_set_size(cq_btn_cunru, scr_act_width() / 9, scr_act_height() / 9); /* 设置按钮大小 */
lv_obj_align(cq_btn_cunru, LV_ALIGN_BOTTOM_MID,-200,0); /* 设置按钮位置 */
lv_obj_set_style_bg_color(cq_btn_cunru, lv_color_hex(0xf4b183), LV_STATE_DEFAULT); /*设置按钮颜色*/
// lv_obj_add_event_cb(cq_btn_cunru, cq_btn_event_cb, LV_EVENT_CLICKED, NULL); /* 设置按钮事件 */
cq_label_cunru = lv_label_create(cq_btn_cunru); /* 创建搜索按钮标签 */
lv_obj_set_style_text_font(cq_label_cunru,&myFont,LV_STATE_DEFAULT); /* 设置字体 */
lv_label_set_text(cq_label_cunru, "存"); /* 设置文本*/
lv_obj_set_align(cq_label_cunru,LV_ALIGN_CENTER); /*对按钮部件进行对齐*/
}
/**
* @brief 取出按钮
* @param 无
* @return 无
*/
void lv_cq_btn_quchu (void)
{
//保存按钮
cq_btn_quchu = lv_btn_create(cq_parent_obj); /* 创建按钮1 */
lv_obj_set_size(cq_btn_quchu, scr_act_width() / 9, scr_act_height() / 9); /* 设置按钮大小 */
lv_obj_align(cq_btn_quchu, LV_ALIGN_BOTTOM_MID,200,0); /* 设置按钮位置 */
lv_obj_set_style_bg_color(cq_btn_quchu, lv_color_hex(0xf4b183), LV_STATE_DEFAULT); /*设置按钮颜色*/
// lv_obj_add_event_cb(cq_btn_quchu, cq_btn_event_cb, LV_EVENT_CLICKED, NULL); /* 设置按钮事件 */
cq_label_quchu = lv_label_create(cq_btn_quchu); /* 创建搜索按钮标签 */
lv_obj_set_style_text_font(cq_label_quchu,&myFont,LV_STATE_DEFAULT); /* 设置字体 */
lv_label_set_text(cq_label_quchu, "取"); /* 设置文本*/
lv_obj_set_align(cq_label_quchu,LV_ALIGN_CENTER); /*对按钮部件进行对齐*/
}
/**
* @brief LVGL演示
* @param 无
* @return 无
*/
void lv_mainstart(void)
{
lv_cq_parent();
lv_cq_label_0();
lv_cq_txtarea_sousuo();
lv_cq_btn_sousuo();
lv_cq_btnmatrix();
lv_label_num();
// lv_label_leixing();
// lv_label_fengzhuang();
lv_label_number();
lv_txtarea_num();
// lv_txtarea_leixing();
// lv_txtarea_fengzhuang();
lv_txtarea_number();
lv_cq_btn_cunru();
lv_cq_btn_quchu();
}
LVGL-cunqu
最新推荐文章于 2024-09-12 19:02:20 发布