lvgl tabview(选项卡控件)

源代码:

// Arc事件回调函数
static void arc_event_handler(lv_obj_t *obj, lv_event_t event)
{
	int angle = 0; // 改变的角度值

	if (event == LV_EVENT_CLICKED)
	{ // 控件上单击事件
		LV_LOG_INFO("arc_event_handler->Arc Clicked\n");
	}
	else if (event == LV_EVENT_VALUE_CHANGED)
	{								   // 角度改变事件,手触摸/拖动进度条
		//angle = lv_arc_get_value(obj); // 获取事件对象改变的角度
		angle = lv_arc_get_angle_start(obj);
		static char buf[8];
		snprintf(buf, sizeof(buf), "Arc %d", angle);	 // 将值变为字符串
		lv_obj_t *label = lv_obj_get_child(obj, NULL);	 // 获取事件对象的标签子对象
		lv_label_set_text(label, buf);					 // 设置标签文本
		lv_obj_align(label, obj, LV_ALIGN_CENTER, 0, 0); // 标签文件有改变要重新设置对齐
		LV_LOG_INFO("arc_event_handler->Value_Changed:%d\n", angle);
	}
	else if (event == LV_EVENT_PRESSED)
	{
		static int16_t a = 0;

		angle = lv_arc_get_angle_end(obj);
		if (angle >= 360)
			angle = 0;
		else
			angle += 30;
		lv_arc_set_angles(obj, 0, angle);
	}
}

//描述:bar事件回调函数
static void bar_event_handler(lv_obj_t *obj, lv_event_t event)
{	
	if (event == LV_EVENT_PRESSED)
	{
		static int16_t value = 0;

		value = lv_bar_get_value(obj);
		if (value > 100)
			value = 0;
		else
			value += 10;

		//静态显示设置值
		lv_bar_set_value(obj, value, LV_ANIM_OFF);
	}
}

//描述:矩阵按钮事件
static void btm_event_handler(lv_obj_t * obj, lv_event_t event)
{
	if (event == LV_EVENT_VALUE_CHANGED) 
	{
		const char * txt = lv_btnm_get_active_btn_text(obj);
		printf("%s was pressed\n", txt);
	}
}


static void button_event_handle(lv_obj_t* obj, lv_event_t event)
{
	static int count = 0;

	if (event == LV_EVENT_CLICKED)
	{
		printf(__FUNCTION__": clicked count=%d.\n", count++);
	}
}

static void calendar_event_handle(lv_obj_t *obj, lv_event_t event)
{
	if (event == LV_EVENT_VALUE_CHANGED) //日历数值改变
	{
		lv_calendar_date_t * date = lv_calendar_get_pressed_date(obj);
		if (date) 
			printf(__FUNCTION__": choice date %d/%d/%d\n", date->year, date->month, date->day);
	}
	else if (event == LV_EVENT_CLICKED) //点击事件
	{
		printf(__FUNCTION__": clicked event.\n");
	}

	//高亮当前选中的日期
	lv_calendar_date_t * date = lv_calendar_get_pressed_date(obj);
	lv_calendar_set_highlighted_dates(obj, date, 3);
}

//描述:复选框事件回调函数
static void cb_event_handler(lv_obj_t * obj, lv_event_t event)
{
	if (event == LV_EVENT_VALUE_CHANGED) 
	{
		printf("State: %s\n", lv_cb_is_checked(obj) ? "Checked" : "Unchecked");
	}
}

typedef struct {
	lv_obj_t * chart;
	lv_chart_series_t * ser1;
	lv_chart_series_t * ser2;
}TChartObject;

static TChartObject chartObject;

__declspec (thread)  int  nCount = 0; //线程局部变量
DWORD  WINAPI chart_thread_proc(LPVOID  * wparm)
{
	TChartObject *pTChartObject = (TChartObject*)wparm;
	int iOffset = 0;

	while (1)
	{
		Sleep(500);

		for (int i = 0; i < 10; i++)
		{
			if (i % 2 == 0)
				lv_chart_set_next(pTChartObject->chart, pTChartObject->ser1, 0 + iOffset);
			else
				lv_chart_set_next(pTChartObject->chart, pTChartObject->ser1, 20 + iOffset);
		}

		for (int i = 0; i < 10; i++)
		{
			if (i % 2 == 0)
				lv_chart_set_next(pTChartObject->chart, pTChartObject->ser2, 0 + iOffset);
			else
				lv_chart_set_next(pTChartObject->chart, pTChartObject->ser2, 40 + iOffset);
		}

		iOffset++;
		if (iOffset > 10)
			iOffset = 0;
		lv_chart_refresh(pTChartObject->chart);
	}
	return  0;
}

static void ddlist_event_handler(lv_obj_t * obj, lv_event_t event)
{
	if (event == LV_EVENT_VALUE_CHANGED) {
		char buf[32];
		lv_ddlist_get_selected_str(obj, buf, sizeof(buf));
		printf("Option: %s\n", buf);
	}
}

static lv_obj_t * imgbtn1;
static lv_obj_t * imgbtn_label;
static void imgbtn_event_handler(lv_obj_t * obj, lv_event_t event)
{
	static int i = 0;;
	static char buffer[32];

	if (obj == imgbtn1) {
		if (event == LV_EVENT_CLICKED) {
			i++;
			sprintf(buffer, "imgBtn Clicked %d", i);
			lv_label_set_text(imgbtn_label, buffer);
		}
	}
}

static void list_event_handler(lv_obj_t * obj, lv_event_t event)
{
	if (event == LV_EVENT_CLICKED) {
		printf("Clicked: %s\n", lv_list_get_btn_text(obj));
	}
}

static lv_obj_t * mbox1;
static void mbox_event_handler(lv_obj_t * obj, lv_event_t event)
{
	if (event == LV_EVENT_VALUE_CHANGED) {
		printf("Button: %s\n", lv_mbox_get_active_btn_text(obj));
		lv_mbox_start_auto_close(mbox1, 10);
	}
}

static void roller_event_handler(lv_obj_t * obj, lv_event_t event)
{
	if (event == LV_EVENT_VALUE_CHANGED) {
		char buf[32];
		lv_roller_get_selected_str(obj, buf, sizeof(buf));
		printf("Selected month: %s\n", buf);
	}
}

static void spinbox_event_handler(lv_obj_t * obj, lv_event_t event)
{
	if (event == LV_EVENT_VALUE_CHANGED) {
		printf("Value: %d\n", lv_spinbox_get_value(obj));
	}
	else if (event == LV_EVENT_CLICKED) {
		/*For simple test: Click the spinbox to increment its value*/
		lv_spinbox_increment(obj);
	}
}

static lv_obj_t * slider_label;
static void slider_event_cb(lv_obj_t * slider, lv_event_t event)
{
	if (event == LV_EVENT_VALUE_CHANGED) {
		static char buf[4]; /* max 3 bytes for number plus 1 null terminating byte */
		snprintf(buf, 4, "%u", lv_slider_get_value(slider));
		lv_label_set_text(slider_label, buf);
	}
}

static void sw_event_handler(lv_obj_t * obj, lv_event_t event)
{
	if (event == LV_EVENT_VALUE_CHANGED) {
		printf("State: %s\n", lv_sw_get_state(obj) ? "On" : "Off");
	}
}


LV_IMG_DECLARE(WaveShare_LOGO)
LV_IMG_DECLARE(image_dog);
#define CANVAS_WIDTH  210
#define CANVAS_HEIGHT 160
static void my_learn_lvgl()
{
	//0. 选项卡控件
	lv_obj_t *tabview;
	tabview = lv_tabview_create(lv_scr_act(), NULL);

	/*Add 3 tabs (the tabs are page (lv_page) and can be scrolled*/
	lv_obj_t *tab1 = lv_tabview_add_tab(tabview, "Tab 1");
	lv_obj_t *tab2 = lv_tabview_add_tab(tabview, "Tab 2");
	lv_obj_t *tab3 = lv_tabview_add_tab(tabview, "Tab 3");
	lv_obj_t *tab4 = lv_tabview_add_tab(tabview, "Tab 4");

	/*Add content to the tabs*/
	lv_obj_t * label_tab = lv_label_create(tab1, NULL);
	lv_label_set_text(label_tab, "This the first tab\n\n"
		"If the content\n"
		"of a tab\n"
		"become too long\n"
		"the it \n"
		"automatically\n"
		"become\n"
		"
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值