LineEdit¶
单行文本的输入字段。
描述¶
LineEdit提供用于编辑单行文本的输入字段。
-当LineEdit控件使用键盘箭头键聚焦时,它只会获得焦点而不会进入编辑模式。
-要进入编辑模式,请用鼠标单击控件,另见keep_editing_on_text_submit。
-要退出编辑模式,按ui_text_submit或ui_cancel(默认为Escape)操作。
-检查edit()、unedit()、is_editing()和editing_toggled以获取更多信息。
重要:
-将LineEdit与ui_focus_next(默认情况下Tab)或ui_focus_prev(默认情况下Shift+Tab)或Control.grab_focus()聚焦仍然进入编辑模式(为了兼容性)。
LineEdit具有许多始终可用的内置快捷方式(此处的Ctrl映射到macOS上的Cmd):
-Ctrl+C:复制
-Ctrl+X:剪切
-Ctrl+V或Ctrl+Y:粘贴/“猛拉”
-Ctrl+Z:撤消
-Ctrl+~:交换输入方向。
-Ctrl+Shift+Z:重做
-Ctrl+U:从插入符号位置到行首删除文本
-Ctrl+K:从插入符号位置到行尾删除文本
-Ctrl+A:选择所有文本
-向上箭头/向下箭头:将插入符号移动到行首/行尾
在macOS上,可以使用一些额外的键盘快捷键:
-Cmd+F:与右箭头相同,将插入符号向右移动一个字符
-Cmd+B:与左箭头相同,将插入符号向左移动一个字符
-Cmd+P:与向上箭头相同,将插入符号移动到上一行
-Cmd+N:与向下箭头相同,将插入符号移动到下一行
-Cmd+D:与相同删除,删除插入符号右侧的字符
-Cmd+H:与Backspace相同,删除插入符号左侧的字符
-Cmd+A:与Home相同,将插入符号移动到行首
-Cmd+E:与End相同,将插入符号移动到行尾
-Cmd+左箭头:与Home相同,将插入符号移动到行首
-Cmd+右箭头:与End相同,将插入符号移动到行尾
注意:上面列出的卡尔特移动快捷方式不受shortcut_keys_enabled的影响。
属性¶
方法¶
void |
|
void |
|
void |
clear() |
void |
|
void |
delete_text(from_column: int, to_column: int) |
void |
deselect() |
void |
edit() |
get_menu() const |
|
get_scroll_offset() const |
|
get_selection_from_column() const |
|
get_selection_to_column() const |
|
has_ime_text() const |
|
has_redo() const |
|
has_selection() const |
|
has_undo() const |
|
void |
insert_text_at_caret(text: String) |
is_editing() const |
|
is_menu_visible() const |
|
void |
menu_option(option: int) |
void |
|
void |
|
void |
unedit() |
主题属性¶
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
信号¶
editing_toggled(toggled_on: bool) 🔗
当LineEdit切换进入或退出编辑模式时发出。
text_change_rejected(rejected_substring: String) 🔗
附加溢出max_length的文本时发出。附加的文本被截断以适合max_length,不适合的部分作为rejected_substring参数传递。
text_changed(new_text: String) 🔗
文本更改时发出。
text_submitted(new_text: String) 🔗
当用户在LineEdit有焦点时按下ui_text_submit操作(默认情况下:Enter或Kp Enter)时发出。
枚举¶
剪切(复制并清除)选定的文本。
复制选定的文本。
将剪贴板文本粘贴到选定文本上(或插入符号的位置)。
不可打印的转义字符会通过String.strip_escapes()自动从操作系统剪贴板中删除。
擦除整个LineEdit文本。
选择整个LineEdit文本。
撤消上一个操作。
反转最后一个撤消操作。
“文本写作方向”子菜单的ID。
将文本方向设置为继承。
将文本方向设置为自动。
将文本方向设置为从左到右。
将文本方向设置为从右到左。
切换控制字符显示。
“插入控制字符”子菜单的ID。
插入从左到右的标记(LRM)字符。
插入从右到左的标记(RLM)字符。
插入从左到右嵌入(LRE)字符的开头。
插入从右到左嵌入(RLE)字符的开头。
插入从左到右覆盖(LRO)字符的开头。
插入从右到左覆盖(RLO)字符的开头。
插入弹出方向格式(PDF)字符。
插入阿拉伯字母标记(ALM)字符。
插入从左到右的隔离(LRI)字符。
插入从右到左的隔离(RLI)字符。
插入第一个强隔离(FSI)字符。
插入弹出方向隔离(PDI)字符。
插入零宽度连接器(ZWJ)字符。
插入零宽度非连接器(ZWNJ)字符。
插入单词连接器(WJ)字符。
插入软连字符(SHY)字符。
打开系统表情符号和符号选择器。
表示MenuItems枚举的大小。
enum VirtualKeyboardType: 🔗
VirtualKeyboardType KEYBOARD_TYPE_DEFAULT = 0
默认文本虚拟键盘。
VirtualKeyboardType KEYBOARD_TYPE_MULTILINE = 1
多行虚拟键盘。
VirtualKeyboardType KEYBOARD_TYPE_NUMBER = 2
虚拟数字键盘,对PIN输入很有用。
VirtualKeyboardType KEYBOARD_TYPE_NUMBER_DECIMAL = 3
虚拟数字键盘,用于输入小数。
VirtualKeyboardType KEYBOARD_TYPE_PHONE = 4
虚拟电话号码键盘。
VirtualKeyboardType KEYBOARD_TYPE_EMAIL_ADDRESS = 5
带有附加键的虚拟键盘可帮助输入电子邮件地址。
VirtualKeyboardType KEYBOARD_TYPE_PASSWORD = 6
用于输入密码的虚拟键盘。在大多数平台上,这应该禁用自动完成和自动大写。
注意:这在Web上不受支持。相反,这与KEYBOARD_TYPE_DEFAULT的行为相同。
VirtualKeyboardType KEYBOARD_TYPE_URL = 7
带有附加键的虚拟键盘可帮助键入URL。
属性说明¶
HorizontalAlignment alignment = 0 🔗
void set_horizontal_alignment(value: HorizontalAlignment)
HorizontalAlignment get_horizontal_alignment()
HorizontalAlignment枚举中定义的文本对齐方式。
如果true,则使插入符号闪烁。
float caret_blink_interval = 0.65 🔗
插入符号闪烁的时间间隔(以秒为单位)。
插入符号在LineEdit中的列位置。设置后,文本可以滚动以适应它。
bool caret_force_displayed = false 🔗
如果true,则LineEdit将始终显示插入符号,即使焦点丢失。
bool caret_mid_grapheme = false 🔗
允许移动插入符号,选择和删除单个复合字符组件。
注意:Backspace始终删除单个复合字符组件。
bool clear_button_enabled = false 🔗
如果true,如果text不为空,LineEdit会显示一个清除按钮,可以用来快速清除文本。
如果true,右键单击时会出现上下文菜单。
bool deselect_on_focus_loss_enabled = true 🔗
如果true,则当焦点丢失时,所选文本将被取消选择。
bool drag_and_drop_selection_enabled = true 🔗
如果true,则允许拖放选定的文本。
bool draw_control_chars = false 🔗
如果true,则显示控制字符。
如果false,则无法修改现有文本并且无法添加新文本。
如果true,则启用“表情符号和符号”菜单。
bool expand_to_text_length = false 🔗
如果true,则LineEdit宽度将增加以保持比text更长的时间。如果text缩短,它将不压缩。
如果true,则LineEdit不显示装饰。
bool keep_editing_on_text_submit = false 🔗
如果true,则LineEdit在按ui_text_submit操作提交文本时不会退出编辑模式(默认情况下:Enter或Kp Enter)。
用于换行和文本整形算法的语言代码。如果留空,则使用当前语言环境。
LineEdit中可以输入的最大字符数。如果为0,则没有限制。
当定义了限制时,超过max_length的字符将被截断。这既适用于设置最大长度时的现有text内容,也适用于在LineEdit中插入的新文本,包括粘贴。
如果任何输入文本被截断,则会发出text_change_rejected信号,并以截断的子字符串为参数:
text = "Hello world"
max_length = 5
# `text` 变成“Hello”。
max_length = 10
text += " goodbye"
# `text` 变成“Hello good”。
# `text_change_rejected` 以“bye”作为参数发出。
Text = "Hello world";
MaxLength = 5;
// “文本”变为“你好”。
MaxLength = 10;
Text += " goodbye";
// `Text` 变成“Hello good”。
// `text_change_rejected` 以“bye”作为参数发出。
bool middle_mouse_paste_enabled = true 🔗
如果false,使用鼠标中键粘贴剪贴板将被禁用。
注意:此方法仅在Linux实现。
String placeholder_text = "" 🔗
LineEdit为空时显示的文本。它是而不是LineEdit的默认值(参见text)。
如果没有text,则设置将出现在LineEdit右端的图标,或者如果clear_button_enabled设置为false,则始终设置该图标。
如果true,则每个字符都替换为秘密字符(参见secret_character)。
String secret_character = "•" 🔗
用于屏蔽秘密输入的字符。只能使用单个字符作为秘密字符。如果它比一个字符长,则仅使用第一个字符。如果为空,则使用空格代替。
bool select_all_on_focus = false 🔗
如果true,则LineEdit将在获得焦点时选择整个文本。
bool selecting_enabled = true 🔗
如果false,则无法使用鼠标或键盘选择文本。
bool shortcut_keys_enabled = true 🔗
如果true,则启用上下文菜单项的快捷键,即使上下文菜单被禁用。
StructuredTextParser structured_text_bidi_override = 0 🔗
void set_structured_text_bidi_override(value: StructuredTextParser)
StructuredTextParser get_structured_text_bidi_override()
为结构化文本设置BiDi算法覆盖。
Array structured_text_bidi_override_options = [] 🔗
void set_structured_text_bidi_override_options(value: Array)
Array get_structured_text_bidi_override_options()
为BiDi覆盖设置附加选项。
LineEdit的字符串值。
注意:使用此属性更改文本不会发出text_changed信号。
TextDirection text_direction = 0 🔗
void set_text_direction(value: TextDirection)
TextDirection get_text_direction()
基本文本写作方向。
bool virtual_keyboard_enabled = true 🔗
如果true,则在关注支持它的平台时显示本机虚拟键盘。
VirtualKeyboardType virtual_keyboard_type = 0 🔗
void set_virtual_keyboard_type(value: VirtualKeyboardType)
VirtualKeyboardType get_virtual_keyboard_type()
指定要显示的虚拟键盘类型。
方法说明¶
void apply_ime() 🔗
应用来自输入法编辑器(IME)的文本,并在IME打开时关闭它。
void cancel_ime() 🔗
关闭输入法编辑器(IME)(如果它已打开)。IME中的任何文本都将丢失。
void clear() 🔗
擦除LineEdit的text。
void delete_char_at_caret() 🔗
删除插入符号当前位置的一个字符(相当于按Delete)。
void delete_text(from_column: int, to_column: int) 🔗
删除从位置from_column到to_column的text部分。两个参数都应在文本长度内。
void deselect() 🔗
清除当前选择。
void edit() 🔗
无论LineEdit是否聚焦,都允许进入编辑模式。
另见keep_editing_on_text_submit。
返回此LineEdit的PopupMenu。默认情况下,右键单击LineEdit时会显示此菜单。
您可以添加自定义菜单项或删除标准菜单项。确保您的ID与标准ID不冲突(请参阅MenuItems)。例如:
func iStart() -> void:
var menu = get_menu()
# 删除“重做”之后的所有项目。
menu.item_count = menu.get_item_index(MENU_REDO) + 1
# 添加自定义项目。
menu.add_separator()
menu.add_item("Insert Date", MENU_MAX + 1)
# 连接回调。
menu.id_pressed.connect(_on_item_pressed)
func _on_item_pressed(id):
if id == MENU_MAX + 1:
insert_text_at_caret(Time.get_date_string_from_system())
public override void iStart()
{
var menu = GetMenu();
// 删除“重做”之后的所有项目。
menu.ItemCount = menu.GetItemIndex(LineEdit.MenuItems.Redo) + 1;
// 添加自定义项目。
menu.AddSeparator();
menu.AddItem("Insert Date", LineEdit.MenuItems.Max + 1);
// 添加事件处理程序。
menu.IdPressed += OnItemPressed;
}
public void OnItemPressed(int id)
{
if (id == LineEdit.MenuItems.Max + 1)
{
InsertTextAtCaret(Time.GetDateStringFromSystem());
}
}
警告: 这是一个必需的内部节点,删除和释放它可能会导致崩溃。如果您想隐藏它或其任何子节点,请使用它们的Window.visible属性。
float get_scroll_offset() const 🔗
以字符数形式返回caret_column引起的滚动偏移量。
返回所选内容内的文本。
int get_selection_from_column() const 🔗
返回选择开始列。
int get_selection_to_column() const 🔗
返回选择结束列。
如果用户在输入法编辑器(IME)中有文本,则返回true。
如果“重做”操作可用,则返回true。
如果用户选择了文本,则返回true。
如果“撤消”操作可用,则返回true。
void insert_text_at_caret(text: String) 🔗
在插入符号处插入text。如果结果值长于max_length,则不会发生任何事情。
返回是否正在编辑LineEdit。
返回菜单是否可见。使用this而不是get_menu()。可见来提高性能(因此避免创建菜单)。
执行MenuItems枚举中定义的给定操作。
void select(from: int = 0, to: int = -1) 🔗
在 LineEdit 中选择 from 和 to 之间的字符。默认情况下,from 位于开始位置,to 位于结束位置。
text = "Welcome"
select() # 将选择“欢迎”。
select(4) # 将会选择“ome”。
select(2, 5) # 将选择“lco”。
Text = "Welcome";
Select(); // 将选择“欢迎”。
Select(4); // 将会选择“ome”。
Select(2, 5); // 将选择“lco”。
void select_all() 🔗
选择整个String。
void unedit() 🔗
允许退出编辑模式,同时保留焦点。
主题属性说明¶
Color caret_color = Color(0.95, 0.95, 0.95, 1) 🔗
LineEdit插入符号(文本光标)的颜色。这可以设置为完全透明的颜色以完全隐藏插入符号。
Color clear_button_color = Color(0.875, 0.875, 0.875, 1) 🔗
颜色用作清除按钮的默认色调。
Color clear_button_color_pressed = Color(1, 1, 1, 1) 🔗
按下清除按钮时使用的颜色。
Color font_color = Color(0.875, 0.875, 0.875, 1) 🔗
默认字体颜色。
Color font_outline_color = Color(0, 0, 0, 1) 🔗
LineEdit的文本轮廓的色调。
Color font_placeholder_color = Color(0.875, 0.875, 0.875, 0.6) 🔗
placeholder_text的字体颜色。
Color font_selected_color = Color(1, 1, 1, 1) 🔗
选定文本的字体颜色(在选定矩形内)。
Color font_uneditable_color = Color(0.875, 0.875, 0.875, 0.5) 🔗
禁用编辑时的字体颜色。
Color selection_color = Color(0.5, 0.5, 0.5, 1) 🔗
选择矩形的颜色。
插入符号的宽度(以像素为单位)。更大的值可用于通过确保插入符号易于可见来提高可访问性,或确保与大字体大小的一致性。
int minimum_character_width = 4 🔗
文本的最小水平空间(不包括清除按钮和内容边距)。该值以“M”字符的数量来衡量(即无需滚动即可显示此数量的“M”字符)。
文本大纲的大小。
注意:如果使用启用了FontFile.multichannel_signed_distance_field的字体,则其FontFile.msdf_pixel_range必须设置为至少两倍outline_size的值才能使轮廓渲染看起来正确。否则,轮廓可能会比预期的更早被切断。
用于文本的字体。
LineEdit文本的字体大小。
清除按钮的纹理。参见clear_button_enabled。
LineEdit具有GUI焦点时使用的背景。focusStyleBox显示在*底座StyleBox之上,因此应使用部分透明的StyleBox来确保底座StyleBox保持可见。表示轮廓或下划线的StyleBox可以很好地用于此目的。要禁用焦点视觉效果,请分配StyleBoxEmpty资源。请注意,禁用焦点视觉效果会损害键盘/控制器导航可用性,因此出于可访问性原因不建议这样做。
LineEdit的默认背景。
LineEdit处于只读模式时使用的背景(editable设置为false)。