属性
基础属性
基础属性是每个组件都有的属性,可通过组件指针直接访问到它们。你可以在 include/LCUI/gui/widget_base.h 文件中找到它们的定义。
基础属性分为只读和可写两种:
- 只读的基础属性是经过计算后的结果,手动修改它们的值是没有意义的,因为它们的值会在下次计算后更新,例如:x、y、width、height 这些几何属性,它们是组件的样式经过布局引擎计算后的结果。
- 可写的基础属性能影响组件的功能和渲染效果,例如:修改
disabled
和event_blocked
能控制组件的事件响应行为, 修改custom_style
能覆盖组件原本的样式。这些属性大都有相关的函数来负责修改它们,我们只需要调用它们即可。
接下来让我们通过示例代码来了解一些常用的基础属性。
LCUI_Widget w = LCUIWidget_New(NULL);
// 几何属性的读取
printf("coordinate: (%f, %f)\n", w->x, w->y);
printf("size: (%f, %f)\n", w->width, w->height);
// 类的增删查
Widget_AddClass(w, "button disabled");
if (Widget_HasClass(w, "disabled")) {
Widget_RemoveClass(w, "disabled");
}
// id
Widget_SetId(w, "btn-submit");
printf("is same widget? %d\n", w == LCUIWidget_GetById("btn-submit"));
// 状态/伪类
if (Widget_HasStatus(w, "focus")) {
printf("widget has focus");
}
// 打印最终样式
LCUI_PrintStyleSheet(w->style);
// 打印匹配的样式
LCUI_PrintStyleSheet(w->inherited_style);
// 设置自定义样式
Widget_SetStyle(w, key_margin_left, 10, px);
Widget_SetStyleString(w, "margin-left", "10px");
// 获取已计算的样式
if (w->computed_style.visible) {
Widget_Hide(w);
} else {
Widget_Show(w);
}