LineEdit
2026/4/14大约 3 分钟
最后同步日期:2026-04-15 | Godot 官方原文 — LineEdit
LineEdit
节点继承关系
继承链:Node → CanvasItem → Control → LineEdit
继承自 Control
| 类型 | 名称 | 说明 |
|---|---|---|
| 属性 | Size | 控件尺寸 |
| 属性 | Position | 控件位置 |
| 属性 | AnchorsPreset | 锚点预设 |
| 属性 | GrowDirection | 超出容器时的扩展方向 |
| 属性 | MouseFilter | 鼠标事件过滤(停止 / 通过 / 忽略) |
| 属性 | FocusMode | 焦点模式(无 / 单击 / 全部) |
| 信号 | gui_input | 接收到 GUI 输入事件 |
| 信号 | mouse_entered | 鼠标进入控件区域 |
| 信号 | mouse_exited | 鼠标离开控件区域 |
| 信号 | focus_entered | 获得焦点 |
| 信号 | focus_exited | 失去焦点 |
| 信号 | resized | 尺寸变化 |
| 方法 | GrabFocus() | 获取焦点 |
| 方法 | ReleaseFocus() | 释放焦点 |
| 方法 | SetAnchorsPreset() | 设置锚点预设 |
| 方法 | GetMinimumSize() | 获取最小尺寸 |
继承自 CanvasItem
| 类型 | 名称 | 说明 |
|---|---|---|
| 属性 | Visible | 是否可见 |
| 属性 | Modulate | 整体颜色叠加(乘法) |
| 属性 | SelfModulate | 自身颜色叠加(不影响子节点) |
| 属性 | ZIndex | 绘制层级(Z 轴排序) |
| 信号 | visibility_changed | 可见性变化时触发 |
| 方法 | GetGlobalMousePosition() | 获取鼠标全局坐标 |
继承自 Node
| 类型 | 名称 | 说明 |
|---|---|---|
| 属性 | Name | 节点名称 |
| 属性 | ProcessMode | 处理模式(始终 / 暂停时 / 仅编辑器) |
| 属性 | ProcessPriority | 处理优先级,数字越小越先执行 |
| 信号 | ready | 节点进入场景树并准备就绪 |
| 信号 | tree_entered | 节点进入场景树 |
| 信号 | tree_exited | 节点完全离开场景树 |
| 方法 | GetNode<T>() | 按路径获取子节点 |
| 方法 | AddChild() | 添加子节点 |
| 方法 | RemoveChild() | 移除子节点 |
| 方法 | QueueFree() | 帧结束后释放节点 |
| 方法 | GetParent() | 获取父节点 |
定义
LineEdit 是一个让你输入一行文字的框——就像登录页面里的"用户名"输入框。你只能输入一行,内容不能换行。
使用频率:★★★★ 维度专用常用(需要用户输入时几乎必用)
节点用途
- 用户名/密码输入
- 搜索框
- 聊天消息输入
- 任何需要用户输入一行文字的场景
使用场景
- 登录界面的用户名和密码输入框
- 游戏内的聊天输入框
- 搜索功能的关键字输入
常用节点搭配
- 搭配
Label作为输入框标题 - 搭配
VBoxContainer排列多个输入框 - 搭配
Button做提交按钮
生效必备素材/资源
无需特殊资源。
节点属性与信号
自有属性
| 属性 | 类型 | 默认值 | 继承自 | 说明 |
|---|---|---|---|---|
text | string | "" | — | 输入框里的文字 |
placeholder_text | string | "" | — | 占位提示文字(灰色,输入内容后消失) |
max_length | int | 0 | — | 最大输入字数(0=不限) |
secret | bool | false | — | 是否隐藏输入(用于密码框,显示为 ***) |
editable | bool | true | — | 是否可编辑 |
clear_button_enabled | bool | false | — | 是否显示清除按钮 |
right_icon | Texture2D | null | — | 右侧图标 |
alignment | 枚举 | Left | — | 文字对齐方式 |
expand_to_text_length | bool | false | — | 输入框宽度是否随文字长度扩展 |
信号
| 信号 | 触发时机 | 参数 |
|---|---|---|
text_changed | 输入框内容发生变化时 | string 新文字 |
text_submitted | 用户按回车提交时 | string 提交的文字 |
常用方法
| 方法 | 说明 |
|---|---|
SetText(string) | 设置输入框文字 |
GetText() | 获取输入框文字 |
Clear() | 清空输入框 |
SelectAll() | 选中所有文字 |
SetCaretColumn(int) | 设置光标位置 |
代码示例
C
using Godot;
public partial class LoginDemo : Control
{
public override void _Ready()
{
// 用户名输入框
var userEdit = new LineEdit();
userEdit.PlaceholderText = "请输入用户名";
userEdit.Position = new Vector2(100, 100);
userEdit.Size = new Vector2(200, 30);
// 密码输入框
var passEdit = new LineEdit();
passEdit.PlaceholderText = "请输入密码";
passEdit.Secret = true;
passEdit.Position = new Vector2(100, 140);
passEdit.Size = new Vector2(200, 30);
// 监听回车提交
passEdit.TextSubmitted += (text) =>
{
GD.Print($"用户名: {userEdit.Text}, 密码: {text}");
};
AddChild(userEdit);
AddChild(passEdit);
}
}GDScript
extends Control
func _ready():
# 用户名输入框
var user_edit = LineEdit.new()
user_edit.placeholder_text = "请输入用户名"
user_edit.position = Vector2(100, 100)
user_edit.size = Vector2(200, 30)
# 密码输入框
var pass_edit = LineEdit.new()
pass_edit.placeholder_text = "请输入密码"
pass_edit.secret = true
pass_edit.position = Vector2(100, 140)
pass_edit.size = Vector2(200, 30)
# 监听回车提交
pass_edit.text_submitted.connect(func(text: String):
print("用户名: " + user_edit.text + ", 密码: " + text)
)
add_child(user_edit)
add_child(pass_edit)