Skip to content

TextInput 是一个底层项,用于显示文本并允许输入文本。 你可能不应该直接使用它,而应该使用 或 组件。

当不属于布局时,其宽度和高度默认为父元素的 100%。

当光标位于可见区域之外时,TextInput 不会自动滚动。 确保这一点是封闭控件的责任,它可以使用 cursor-position-changed 回调来实现。

示例

slint
export component Example inherits Window {    width: 270px;    height: 40px;    Rectangle {        clip: true;
        TextInput {            text: "Edit me";            width: max(parent.width, self.preferred-width);            vertical-alignment: center;
            private property <length> margin: 1rem;            cursor-position-changed(cursor-position) => {                if cursor-position.x + self.x < margin {                    self.x = - cursor-position.x + margin;                } else if cursor-position.x + self.x > parent.width - margin - self.text-cursor-width {                    self.x = parent.width - cursor-position.x - margin - self.text-cursor-width;                }            }        }    }}

属性

color

brush 默认:depends on the style

文本的颜色。

font-family

string 默认:""

用于渲染文本的字体系列的名称。

font-size

length 默认:0px

文本的字体大小。

font-weight

int 默认:0

字体的粗细。值范围从 100(最细)到 900(最粗)。400 是常规粗细。

font-italic

bool 默认:false

字体外观是否应以斜体绘制。

font-metrics

struct FontMetrics (out) 默认:a struct with all default values

按元素使用的字体像素大小缩放的字体设计度量。

FontMetrics

用于保存指定像素大小的字体度量的结构。

  • ascent (length):基线到字体中最高字形顶部的距离。
  • descent (length):基线到字体中最高字形底部的距离。通常为负值。
  • x_height (length):基线到字体中最高字形水平中点的距离;如果字体未指定则为零。
  • cap_height (length):基线到字体中常规大写字形顶部的距离;如果字体未指定则为零。

has-focus

bool (out) 默认:false

TextInput 获得焦点时,它将此属性设置为 true。只有在这种情况下它才会接收 KeyEvent

horizontal-alignment

enum TextHorizontalAlignment 默认:the first enum value

文本的水平对齐方式。

TextHorizontalAlignment

此枚举描述 TextStyledText 元素沿水平轴的不同对齐方式。

  • start:文本将与包含框的起始边缘对齐。这可能是左或右,取决于文本的方向。
  • end:文本将与包含框的结束边缘对齐。这可能是左或右,取决于文本的方向。
  • left:文本将与包含框的左边缘对齐。
  • center:文本将在包含框内水平居中。
  • right:文本将与包含框的右边缘对齐。

input-type

enum InputType 默认:text

使用此属性来配置 TextInput 以编辑特殊输入,例如密码字段。

InputType

此枚举用于定义输入字段的类型。

  • text:默认值。这将正常渲染所有字符。
  • password:这将使用默认为 ”*“ 的字符渲染所有字符。
  • number:这将仅接受并渲染数字字符(0-9)。
  • decimal:如果字符是小数的有效部分,这将会接受并渲染它们。

letter-spacing

length 默认:0

字符间距允许更改字形之间的间距。正值增加间距,负值减小距离。

page-height

length 默认:0px

用于计算用户按下 Page Up 或 Page Down 时滚动量的页面高度。

read-only

bool 默认:false

当设置为 true 时,通过键盘和鼠标的文本编辑被禁用,但仍然可以选择文本并以编程方式编辑文本。

selection-background-color

color 默认:a transparent color

选区的背景颜色。

selection-foreground-color

color 默认:a transparent color

选区的前景颜色。

single-line

bool 默认:true

当设置为 true 时,无论文本中是否有换行分隔符,文本始终渲染为单行。

text-cursor-width

length 默认:provided at run-time by the selected widget style

文本光标的宽度。

text

string (in-out) 默认:""

由用户渲染和编辑的文本。

vertical-alignment

enum TextVerticalAlignment 默认:the first enum value

文本的垂直对齐方式。

TextVerticalAlignment

此枚举描述 TextStyledText 元素沿垂直轴的不同对齐方式。

  • top:文本将与包含框的顶部对齐。
  • center:文本将在包含框内垂直居中。
  • bottom:文本将与包含框的底部对齐。

wrap

enum TextWrap 默认:no-wrap

文本输入的换行方式。仅在 single-line 为 false 时才有意义。

TextWrap

此枚举描述当文本过宽无法放入 TextStyledText 元素的宽度时如何换行。

  • no-wrap:文本不会换行,而是会溢出。
  • word-wrap:文本将尽可能在单词边界处换行,对于很长的单词则在任意位置换行。
  • char-wrap:文本将在任意字符处换行。目前仅由 Qt 和 Software 渲染器支持。

函数

focus()

调用此函数以使文本输入获得焦点并接收将来的键盘事件。

clear-focus()

如果此 TextInput 当前具有焦点,调用此函数以移除键盘焦点。另请参见 焦点处理

set-selection-offsets(start: int, end: int)

选择两个 UTF-8 偏移量之间的文本。

select-all()

选择所有文本。

clear-selection()

清除选择。

copy()

将所选文本复制到剪贴板。

cut()

将所选文本复制到剪贴板并将其从可编辑区域中移除。

paste()

在光标位置粘贴剪贴板的文本内容。

回调

accepted()

当按下 Enter 键时调用。

cursor-position-changed(position: Point)

光标已移动到由 Point 参数描述的新的 (x, y) 位置。

edited()

当文本因用户修改而发生更改时调用。

key-pressed(event: KeyEvent) -> EventResult

当按键被按下时调用,参数是一个 KeyEvent 结构。使用此回调在 TextInput 之前处理按键。返回 accept 表示你已处理该事件,或返回 rejectTextInput 处理它。

key-released(event: KeyEvent) -> EventResult

当按键被释放时调用,参数是一个 KeyEvent 结构。使用此回调在 TextInput 之前处理按键。返回 accept 表示你已处理该事件,或返回 rejectTextInput 处理它。

可访问性

默认情况下,TextInput 元素具有以下可访问性属性:

  • accessible-role: text-input;
  • accessible-value: text;
  • accessible-enabled: enabled;
  • accessible-read-only: read-only;

基于 MIT 协议发布