## edit\_t
### 概述
![image](images/edit_t_0.png)
单行编辑器控件。
在基于SDL的平台,单行编辑器控件使用平台原生的输入法,对于嵌入式平台使用内置的输入法。
在使用内置的输入法时,软键盘由输入类型决定,开发者可以自定义软键盘的界面。
edit\_t是[widget\_t](widget_t.md)的子类控件,widget\_t的函数均适用于edit\_t控件。
edit\_t本身可以做为容器,放入按钮等控件。有几个特殊的子控件:
* 名为"clear"的按钮。点击时清除编辑器中的内容。
* 名为"inc"的按钮。点击时增加编辑器的值,用于实现类似于spinbox的功能。
* 名为"dec"的按钮。点击时减少编辑器的值,用于实现类似于spinbox的功能。
* 名为"visible"的复选框。勾选时显示密码,反之不显示密码。
在xml中使用"edit"标签创建编辑器控件。如:
```xml
| 函数名称 | 说明 | | -------- | ------------ | | edit\_cast | 转换为edit对象(供脚本语言使用)。 | | edit\_create | 创建edit对象 | | edit\_get\_double | 获取double类型的值。 | | edit\_get\_int | 获取int类型的值。 | | edit\_set\_auto\_fix | 设置编辑器是否为自动改正。 | | edit\_set\_cursor | 设置输入框的光标坐标。 | | edit\_set\_double | 设置double类型的值。 | | edit\_set\_float\_limit | 设置为浮点数输入及取值范围。 | | edit\_set\_focus | 设置为焦点。 | | edit\_set\_input\_tips | 设置编辑器的输入提示。 | | edit\_set\_input\_type | 设置编辑器的输入类型。 | | edit\_set\_int | 设置int类型的值。 | | edit\_set\_int\_limit | 设置为整数输入及取值范围。 | | edit\_set\_is\_valid\_char | 设置输入字符检查函数。 | | edit\_set\_open\_im\_when\_focused | 设置编辑器是否在获得焦点时打开输入法。 | | edit\_set\_password\_visible | 当编辑器输入类型为密码时,设置密码是否可见。 | | edit\_set\_readonly | 设置编辑器是否为只读。 | | edit\_set\_select\_none\_when\_focused | 设置编辑器是否在获得焦点时不选中文本。 | | edit\_set\_text\_limit | 设置为文本输入及其长度限制,不允许输入超过max个字符,少于min个字符时进入error状态。 | ### 属性
| 属性名称 | 类型 | 说明 | | -------- | ----- | ------------ | | auto\_fix | bool\_t | 输入无效时,是否自动改正。 | | bottom\_margin | uint8\_t | 下边距。 | | input\_type | input\_type\_t | 输入类型。 | | left\_margin | uint8\_t | 左边距。 | | max | double | 最大值或最大长度。 | | min | double | 最小值或最小长度。 | | open\_im\_when\_focused | bool\_t | 获得焦点时打开输入法。 | | password\_visible | bool\_t | 密码是否可见。 | | readonly | bool\_t | 编辑器是否为只读。 | | right\_margin | uint8\_t | 右边距。 | | select\_none\_when\_focused | bool\_t | 获得焦点时不选中文本。 | | step | double | 步长。 | | tips | char* | 输入提示。 | | top\_margin | uint8\_t | 上边距。 | ### 事件
| 事件名称 | 类型 | 说明 | | -------- | ----- | ------- | | EVT\_VALUE\_CHANGING | event\_t | 文本正在改变事件(编辑中)。 | | EVT\_VALUE\_CHANGED | event\_t | 文本改变事件。 | #### edit\_cast 函数 ----------------------- * 函数功能: >
转换为edit对象(供脚本语言使用)。 * 函数原型: ``` widget_t* edit_cast (widget_t* widget); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | widget\_t* | edit对象。 | | widget | widget\_t* | edit对象。 | #### edit\_create 函数 ----------------------- * 函数功能: >
创建edit对象 * 函数原型: ``` widget_t* edit_create (widget_t* parent, xy_t x, xy_t y, wh_t w, wh_t h); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | widget\_t* | 对象。 | | parent | widget\_t* | 父控件 | | x | xy\_t | x坐标 | | y | xy\_t | y坐标 | | w | wh\_t | 宽度 | | h | wh\_t | 高度 | #### edit\_get\_double 函数 ----------------------- * 函数功能: >
获取double类型的值。 * 函数原型: ``` double edit_get_double (widget_t* widget); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | double | 返回double的值。 | | widget | widget\_t* | widget对象。 | #### edit\_get\_int 函数 ----------------------- * 函数功能: >
获取int类型的值。 * 函数原型: ``` int32_t edit_get_int (widget_t* widget); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | int32\_t | 返回int的值。 | | widget | widget\_t* | widget对象。 | #### edit\_set\_auto\_fix 函数 ----------------------- * 函数功能: >
设置编辑器是否为自动改正。 * 函数原型: ``` ret_t edit_set_auto_fix (widget_t* widget, bool_t auto_fix); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | widget | widget\_t* | widget对象。 | | auto\_fix | bool\_t | 自动改正。 | #### edit\_set\_cursor 函数 ----------------------- * 函数功能: >
设置输入框的光标坐标。 * 函数原型: ``` ret_t edit_set_cursor (widget_t* widget, uint32_t cursor); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | widget | widget\_t* | widget对象。 | | cursor | uint32\_t | 是否为焦点。 | #### edit\_set\_double 函数 ----------------------- * 函数功能: >
设置double类型的值。 * 函数原型: ``` ret_t edit_set_double (widget_t* widget, double value); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | widget | widget\_t* | widget对象。 | | value | double | 值。 | #### edit\_set\_float\_limit 函数 ----------------------- * 函数功能: >
设置为浮点数输入及取值范围。 * 函数原型: ``` ret_t edit_set_float_limit (widget_t* widget, double min, double max, double step); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | widget | widget\_t* | widget对象。 | | min | double | 最小值。 | | max | double | 最大值。 | | step | double | 步长。 | #### edit\_set\_focus 函数 ----------------------- * 函数功能: >
设置为焦点。 * 函数原型: ``` ret_t edit_set_focus (widget_t* widget, bool_t focus); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | widget | widget\_t* | widget对象。 | | focus | bool\_t | 是否为焦点。 | #### edit\_set\_input\_tips 函数 ----------------------- * 函数功能: >
设置编辑器的输入提示。 * 函数原型: ``` ret_t edit_set_input_tips (widget_t* widget, char* tips); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | widget | widget\_t* | widget对象。 | | tips | char* | 输入提示。 | #### edit\_set\_input\_type 函数 ----------------------- * 函数功能: >
设置编辑器的输入类型。 * 函数原型: ``` ret_t edit_set_input_type (widget_t* widget, input_type_t type); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | widget | widget\_t* | widget对象。 | | type | input\_type\_t | 输入类型。 | #### edit\_set\_int 函数 ----------------------- * 函数功能: >
设置int类型的值。 * 函数原型: ``` ret_t edit_set_int (widget_t* widget, int32_t value); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | widget | widget\_t* | widget对象。 | | value | int32\_t | 值。 | #### edit\_set\_int\_limit 函数 ----------------------- * 函数功能: >
设置为整数输入及取值范围。 * 函数原型: ``` ret_t edit_set_int_limit (widget_t* widget, int32_t min, int32_t max, int32_t step); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | widget | widget\_t* | widget对象。 | | min | int32\_t | 最小值。 | | max | int32\_t | 最大值。 | | step | int32\_t | 步长。 | #### edit\_set\_is\_valid\_char 函数 ----------------------- * 函数功能: >
设置输入字符检查函数。 > 如果内置检查函数不能满足需求时,可以设置自定义的检查函数。 * 函数原型: ``` ret_t edit_set_is_valid_char (widget_t* widget, edit_is_valid_char_t is_valid_char); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | widget | widget\_t* | widget对象。 | | is\_valid\_char | edit\_is\_valid\_char\_t | 检查输入字符是否有效的回调函数。 | #### edit\_set\_open\_im\_when\_focused 函数 ----------------------- * 函数功能: >
设置编辑器是否在获得焦点时打开输入法。 * 函数原型: ``` ret_t edit_set_open_im_when_focused (widget_t* widget, bool_t open_im_when_focused); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | widget | widget\_t* | widget对象。 | | open\_im\_when\_focused | bool\_t | 是否在获得焦点时打开输入法。 | #### edit\_set\_password\_visible 函数 ----------------------- * 函数功能: >
当编辑器输入类型为密码时,设置密码是否可见。 * 函数原型: ``` ret_t edit_set_password_visible (widget_t* widget, bool_t password_visible); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | widget | widget\_t* | widget对象。 | | password\_visible | bool\_t | 密码是否可见。 | #### edit\_set\_readonly 函数 ----------------------- * 函数功能: >
设置编辑器是否为只读。 * 函数原型: ``` ret_t edit_set_readonly (widget_t* widget, bool_t readonly); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | widget | widget\_t* | widget对象。 | | readonly | bool\_t | 只读。 | #### edit\_set\_select\_none\_when\_focused 函数 ----------------------- * 函数功能: >
设置编辑器是否在获得焦点时不选中文本。 * 函数原型: ``` ret_t edit_set_select_none_when_focused (widget_t* widget, bool_t select_none_when_focused); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | widget | widget\_t* | widget对象。 | | select\_none\_when\_focused | bool\_t | 是否在获得焦点时不选中文本。 | #### edit\_set\_text\_limit 函数 ----------------------- * 函数功能: >
设置为文本输入及其长度限制,不允许输入超过max个字符,少于min个字符时进入error状态。 * 函数原型: ``` ret_t edit_set_text_limit (widget_t* widget, uint32_t min, uint32_t max); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | widget | widget\_t* | widget对象。 | | min | uint32\_t | 最小长度。 | | max | uint32\_t | 最大长度。 | #### auto\_fix 属性 ----------------------- >
输入无效时,是否自动改正。 * 类型:bool\_t | 特性 | 是否支持 | | -------- | ----- | | 可直接读取 | 是 | | 可直接修改 | 否 | | 可持久化 | 是 | | 可脚本化 | 是 | | 可在IDE中设置 | 是 | | 可在XML中设置 | 是 | | 可通过widget\_get\_prop读取 | 是 | | 可通过widget\_set\_prop修改 | 是 | #### bottom\_margin 属性 ----------------------- >
下边距。 * 类型:uint8\_t | 特性 | 是否支持 | | -------- | ----- | | 可直接读取 | 是 | | 可直接修改 | 否 | | 可在XML中设置 | 是 | | 可通过widget\_get\_prop读取 | 是 | | 可通过widget\_set\_prop修改 | 是 | #### input\_type 属性 ----------------------- >
输入类型。 * 类型:input\_type\_t | 特性 | 是否支持 | | -------- | ----- | | 可直接读取 | 是 | | 可直接修改 | 否 | | 可持久化 | 是 | | 可脚本化 | 是 | | 可在IDE中设置 | 是 | | 可在XML中设置 | 是 | | 可通过widget\_get\_prop读取 | 是 | | 可通过widget\_set\_prop修改 | 是 | #### left\_margin 属性 ----------------------- >
左边距。 * 类型:uint8\_t | 特性 | 是否支持 | | -------- | ----- | | 可直接读取 | 是 | | 可直接修改 | 否 | | 可在XML中设置 | 是 | | 可通过widget\_get\_prop读取 | 是 | | 可通过widget\_set\_prop修改 | 是 | #### max 属性 ----------------------- >
最大值或最大长度。 * 类型:double | 特性 | 是否支持 | | -------- | ----- | | 可直接读取 | 是 | | 可直接修改 | 否 | | 可持久化 | 是 | | 可脚本化 | 是 | | 可在IDE中设置 | 是 | | 可在XML中设置 | 是 | | 可通过widget\_get\_prop读取 | 是 | | 可通过widget\_set\_prop修改 | 是 | #### min 属性 ----------------------- >
最小值或最小长度。 * 类型:double | 特性 | 是否支持 | | -------- | ----- | | 可直接读取 | 是 | | 可直接修改 | 否 | | 可持久化 | 是 | | 可脚本化 | 是 | | 可在IDE中设置 | 是 | | 可在XML中设置 | 是 | | 可通过widget\_get\_prop读取 | 是 | | 可通过widget\_set\_prop修改 | 是 | #### open\_im\_when\_focused 属性 ----------------------- >
获得焦点时打开输入法。 > 主要用于没有指针设备的情况,否则每次切换焦点时都打开输入法。 * 类型:bool\_t | 特性 | 是否支持 | | -------- | ----- | | 可直接读取 | 是 | | 可直接修改 | 否 | | 可持久化 | 是 | | 可脚本化 | 是 | | 可在IDE中设置 | 是 | | 可在XML中设置 | 是 | | 可通过widget\_get\_prop读取 | 是 | | 可通过widget\_set\_prop修改 | 是 | #### password\_visible 属性 ----------------------- >
密码是否可见。 * 类型:bool\_t | 特性 | 是否支持 | | -------- | ----- | | 可直接读取 | 是 | | 可直接修改 | 否 | | 可持久化 | 是 | | 可脚本化 | 是 | | 可在IDE中设置 | 是 | | 可在XML中设置 | 是 | | 可通过widget\_get\_prop读取 | 是 | | 可通过widget\_set\_prop修改 | 是 | #### readonly 属性 ----------------------- >
编辑器是否为只读。 * 类型:bool\_t | 特性 | 是否支持 | | -------- | ----- | | 可直接读取 | 是 | | 可直接修改 | 否 | | 可持久化 | 是 | | 可脚本化 | 是 | | 可在IDE中设置 | 是 | | 可在XML中设置 | 是 | | 可通过widget\_get\_prop读取 | 是 | | 可通过widget\_set\_prop修改 | 是 | #### right\_margin 属性 ----------------------- >
右边距。 * 类型:uint8\_t | 特性 | 是否支持 | | -------- | ----- | | 可直接读取 | 是 | | 可直接修改 | 否 | | 可在XML中设置 | 是 | | 可通过widget\_get\_prop读取 | 是 | | 可通过widget\_set\_prop修改 | 是 | #### select\_none\_when\_focused 属性 ----------------------- >
获得焦点时不选中文本。 > 主要用于没有指针设备的情况,否则软键盘无法取消选中文本。 * 类型:bool\_t | 特性 | 是否支持 | | -------- | ----- | | 可直接读取 | 是 | | 可直接修改 | 否 | | 可持久化 | 是 | | 可脚本化 | 是 | | 可在IDE中设置 | 是 | | 可在XML中设置 | 是 | | 可通过widget\_get\_prop读取 | 是 | | 可通过widget\_set\_prop修改 | 是 | #### step 属性 ----------------------- >
步长。 作为数值型编辑器时,一次增加和减少时的数值。 * 类型:double | 特性 | 是否支持 | | -------- | ----- | | 可直接读取 | 是 | | 可直接修改 | 否 | | 可持久化 | 是 | | 可脚本化 | 是 | | 可在IDE中设置 | 是 | | 可在XML中设置 | 是 | | 可通过widget\_get\_prop读取 | 是 | | 可通过widget\_set\_prop修改 | 是 | #### tips 属性 ----------------------- >
输入提示。 * 类型:char* | 特性 | 是否支持 | | -------- | ----- | | 可直接读取 | 是 | | 可直接修改 | 否 | | 可持久化 | 是 | | 可脚本化 | 是 | | 可在IDE中设置 | 是 | | 可在XML中设置 | 是 | | 可通过widget\_get\_prop读取 | 是 | | 可通过widget\_set\_prop修改 | 是 | #### top\_margin 属性 ----------------------- >
上边距。 * 类型:uint8\_t | 特性 | 是否支持 | | -------- | ----- | | 可直接读取 | 是 | | 可直接修改 | 否 | | 可在XML中设置 | 是 | | 可通过widget\_get\_prop读取 | 是 | | 可通过widget\_set\_prop修改 | 是 |