LVGL-cunqu

/**
 * @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();
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值