awtk开发实践——学习篇8:button示例(按键控件)
作者:互联网
说明:
本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。
QQ 群 号:513683159 【相互学习】
内容来源:
官方的手册(免费获取)Pxx=该手册的对应页码xx
github-awtk
说明
awtk开发实践——学习篇7:创建简单工程(方式二:基于HelloWorld.Xml-Demo工程)
按照上篇创建工程,只需将label.c
文件替换为bubble.c
文件。
修改一下可执行文件名即可。
button.c
#include "awtk.h"
static ret_t on_click(void* ctx, event_t* e) {
widget_t* button = WIDGET(e->target);
log_debug("on_click: %s\n", button->name);
return RET_OK;
}
static ret_t on_long_press(void* ctx, event_t* e) {
widget_t* button = WIDGET(e->target);
log_debug("on_long_press: %s\n", button->name);
return RET_OK;
}
static ret_t on_pointer_leave(void* ctx, event_t* e) {
widget_t* button = WIDGET(e->target);
log_debug("on_pointer_leave: %s\n", button->name);
return RET_OK;
}
static ret_t on_pointer_up(void* ctx, event_t* e) {
widget_t* button = WIDGET(e->target);
log_debug("on_pointer_up: %s\n", button->name);
return RET_OK;
}
ret_t application_init() {
widget_t* win = window_create(NULL, 0, 0, 0, 0); //创建window对象
widget_t* ok = button_create(win, 0, 0, 0, 0); //创建button对象
locale_info_change(locale_info(), "zh", "CN"); //设置当前的国家和语言。默认为:"en", "US"
widget_set_name(ok, "ok"); //设置控件的名称:ok
widget_set_tr_text(ok, "ok"); //获取翻译之后的文本,然后调用widget_set_text
button_set_enable_long_press(ok, TRUE); //设置是否启用长按事件
button_set_long_press_time(ok, 1000); //设置触发长按事件的时间:1000毫秒
widget_set_self_layout_params(ok, "center", "middle", "50%", "30");//设置控件自己的布局(缺省布局器)参数(过时,请用widget_set_self_layout)。
// 等同于:widget_set_self_layout(ok, "default(x=center, y=middle, w=50%, h=30)");
widget_on(ok, EVT_CLICK, on_click, NULL); //注册指定事件的处理函数
widget_on(ok, EVT_LONG_PRESS, on_long_press, NULL); //注册指定事件的处理函数
widget_on(ok, EVT_POINTER_LEAVE, on_pointer_leave, NULL); //注册指定事件的处理函数
widget_on(ok, EVT_POINTER_UP, on_pointer_up, NULL); //注册指定事件的处理函数
widget_layout(win); //布局当前控件及子控件
return RET_OK;
}
该示例注册4种触发事件:
①EVT_CLICK
:点击事件名(pointer_event_t)。
点击按键触发,输出:on_click: ok
②EVT_LONG_PRESS
:长按事件名(pointer_event_t)。
长按按键1s触发,输出:on_long_press: ok
③EVT_POINTER_LEAVE
:指针离开事件名(pointer_event_t)。
鼠标从按键上离开触发:输出:on_pointer_leave: ok
④EVT_POINTER_UP
:指针抬起事件名(pointer_event_t)。
鼠标按下按键抬起瞬间触发,输出:on_pointer_up: ok
执行过程:
1.生成资源:sh assets_gen.sh
,与上一项目相同(无更改),故此处可省略。
2.编译:scons
3.执行:./bin/demo
实现效果:
标签:控件,widget,set,ok,示例,EVT,button,pointer 来源: https://blog.csdn.net/weixin_42645653/article/details/120813952