## widget\_t ### 概述 **widget_t** 是所有控件、窗口和窗口管理器的基类。 **widget_t**也是一个容器,可放其它**widget_t**到它的内部,形成一个树形结构。 ![image](images/widget_t_0.png) 通常**widget_t**通过一个矩形区域向用户呈现一些信息,接受用户的输入,并据此做出适当的反应。 它负责控件的生命周期、通用状态、事件分发和Style的管理。 本类提供的接口(函数和属性)除非特别说明,一般都适用于子类控件。 为了便于解释,这里特别说明一下几个术语: * **父控件与子控件**:父控件与子控件指的两个控件的组合关系(这是在运行时决定的)。 比如:在窗口中放一个按钮,此时,我们称按钮是窗口的子控件,窗口是按钮的父控件。 ![image](images/widget_t_1.png) * **子类控件与父类控件**:子类控件与父类控件指的两类控件的继承关系(这是在设计时决定的)。 比如:我们称**button_t**是**widget_t**的子类控件,**widget_t**是**button_t**的父类控件。 ![image](images/widget_t_2.png) widget相关的函数都只能在GUI线程中执行,如果需在非GUI线程中想调用widget相关函数, 请用idle\_queue或timer\_queue进行串行化。 请参考[demo thread](https://github.com/zlgopen/awtk/blob/master/demos/demo_thread_app.c) **widget\_t**是抽象类,不要直接创建**widget\_t**的实例。控件支持两种创建方式: * 通过XML创建。如: ```xml