Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
TabContainer
继承: Container < Control < CanvasItem < Node < Object
会为每个子控件创建一个选项卡的容器,只会显示活动选项卡对应的控件。
描述
以选项卡视图排列子控件,为每个子控件创建一个选项卡。活动选项卡对应的控件可见,其他子控件都会被隐藏。非控件子节点会被忽略。
注意:可点击的选项卡是由这个节点负责绘制的;不需要 TabBar。
教程
属性
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
方法
get_current_tab_control() const |
|
get_popup() const |
|
get_previous_tab() const |
|
get_tab_bar() const |
|
get_tab_button_icon(tab_idx: int) const |
|
get_tab_control(tab_idx: int) const |
|
get_tab_count() const |
|
get_tab_icon(tab_idx: int) const |
|
get_tab_icon_max_width(tab_idx: int) const |
|
get_tab_idx_at_point(point: Vector2) const |
|
get_tab_idx_from_control(control: Control) const |
|
get_tab_metadata(tab_idx: int) const |
|
get_tab_title(tab_idx: int) const |
|
get_tab_tooltip(tab_idx: int) const |
|
is_tab_disabled(tab_idx: int) const |
|
is_tab_hidden(tab_idx: int) const |
|
void |
|
void |
set_tab_button_icon(tab_idx: int, icon: Texture2D) |
void |
set_tab_disabled(tab_idx: int, disabled: bool) |
void |
set_tab_hidden(tab_idx: int, hidden: bool) |
void |
set_tab_icon(tab_idx: int, icon: Texture2D) |
void |
set_tab_icon_max_width(tab_idx: int, width: int) |
void |
set_tab_metadata(tab_idx: int, metadata: Variant) |
void |
set_tab_title(tab_idx: int, title: String) |
void |
set_tab_tooltip(tab_idx: int, tooltip: String) |
主题属性
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
信号
active_tab_rearranged(idx_to: int) 🔗
通过鼠标拖动重新排列活动选项卡时发出。见 drag_to_rearrange_enabled。
pre_popup_pressed() 🔗
单击 TabContainer 的 Popup 按钮时发出。有关详细信息,请参阅 set_popup()。
tab_button_pressed(tab: int) 🔗
用户点击该选项卡上的按钮图标时发出。
切换到另一个选项卡时发出。
单击选项卡时发出,即使它是当前选项卡。
当鼠标悬停选项卡时发出。
通过点击、定向输入或脚本选中某个选项卡时发出,即便该选项卡本来就是当前选项卡。
枚举
enum TabPosition: 🔗
TabPosition POSITION_TOP = 0
将选项卡置于顶部。
TabPosition POSITION_BOTTOM = 1
将选项卡置于底部。选项卡栏的 StyleBox 会垂直翻转。
TabPosition POSITION_MAX = 2
代表 TabPosition 枚举的大小。
属性说明
bool all_tabs_in_front = false
🔗
如果为 true
,所有选项卡都会被绘制在面板之前。如果为 false
,未激活的选项卡会被绘制在面板之后。
如果为 true
,则会隐藏超出该节点宽度的选项卡,改为显示两个导航按钮。否则,会更新该节点的最小尺寸,让所有选项卡均可见。
当前选项卡的索引。设置后,此索引的 Control 节点的 visible
属性会被设为 true
,其他所有都设置为 false
。
设为 -1
表示不选中任何选项卡。
bool deselect_enabled = false
🔗
如果为 true
,则所有选项卡都可以取消选中状态,达到不选中任何选项卡的状态。点击 current_tab 取消选中。
未选中任何选项卡时只会显示选项卡头。
bool drag_to_rearrange_enabled = false
🔗
如果为 true
,可以通过鼠标拖动重新排列选项卡。
AlignmentMode tab_alignment = 0
🔗
void set_tab_alignment(value: AlignmentMode)
AlignmentMode get_tab_alignment()
设置选项卡的放置位置。详见 AlignmentMode。
FocusMode tab_focus_mode = 2
🔗
内部 TabBar 节点的焦点访问模式。
TabPosition tabs_position = 0
🔗
void set_tabs_position(value: TabPosition)
TabPosition get_tabs_position()
设置选项卡栏的位置。详见 TabPosition。
int tabs_rearrange_group = -1
🔗
具有相同重新排列组 ID 的 TabContainer 将允许在它们之间拖动选项卡。使用 drag_to_rearrange_enabled 启用拖动。
将该属性设置为 -1
将禁用 TabContainer 之间的重新排列。
如果为 true
,选项卡可见。如果 false
,选项卡的内容和标题被隐藏。
如果为 true
,隐藏的子 Control 节点在总数中考虑其最小大小,而不是仅考虑当前可见的一个。
方法说明
Control get_current_tab_control() const 🔗
返回位于活动选项卡索引处的子 Control 节点。
如果已经使用 set_popup() 设置了 Popup 节点实例,则返回该节点实例。
警告:这是一个必需的内部节点,移除和释放它可能会导致崩溃。如果希望隐藏它或它的任何子项,请使用它们的 Window.visible 属性。
int get_previous_tab() const 🔗
返回上一个活动选项卡的索引。
返回这个容器中包含的 TabBar。
警告:这是一个必需的内部节点,对其进行移除和释放或者编辑其中的选项卡可能会导致崩溃。如果你想编辑选项卡,请使用 TabContainer 提供的方法。
Texture2D get_tab_button_icon(tab_idx: int) const 🔗
返回索引为 tab_idx
的选项卡的按钮图标。
Control get_tab_control(tab_idx: int) const 🔗
返回索引为 tab_idx
的选项卡的 Control 节点。
返回选项卡的数量。
Texture2D get_tab_icon(tab_idx: int) const 🔗
返回索引 tab_idx
处选项卡的 Texture2D,如果该选项卡没有 Texture2D,则返回 null
。
int get_tab_icon_max_width(tab_idx: int) const 🔗
设置索引为 tab_idx
处选项卡所允许的最大图标宽度。
int get_tab_idx_at_point(point: Vector2) const 🔗
返回位于局部坐标 point
处的选项卡的索引。如果该点在控件边界之外或查询位置没有选项卡,则返回 -1
。
int get_tab_idx_from_control(control: Control) const 🔗
返回与给定的 control
绑定的标签的索引。该控件必须为 TabContainer 的子节点。
Variant get_tab_metadata(tab_idx: int) const 🔗
返回索引为 tab_idx
的选项卡的元数据的值,由 set_tab_metadata() 设置。如果之前没有设置元数据,则默认返回 null
。
String get_tab_title(tab_idx: int) const 🔗
返回索引 tab_idx
处选项卡的标题。选项卡的标题默认为索引子节点的名称,但可以用 set_tab_title() 覆盖。
String get_tab_tooltip(tab_idx: int) const 🔗
返回索引 tab_idx
处的选项卡的工具提示文本。
bool is_tab_disabled(tab_idx: int) const 🔗
如果索引 tab_idx
处的选项卡被禁用,则返回 true
。
如果索引 tab_idx
处的选项卡被隐藏,则返回 true
。
bool select_next_available() 🔗
选择索引大于当前所选选项卡索引的第一个可用选项卡。如果选项卡选择发生改变,则返回 true
。
bool select_previous_available() 🔗
选择索引低于当前所选选项卡索引的第一个可用选项卡。如果选项卡选择发生改变,则返回 true
。
如果在一个 Popup 节点实例上设置,则一个弹出菜单图标会出现在该 TabContainer 的右上角(将其设置为 null
将使其消失)。点击它将展开该 Popup 节点。
void set_tab_button_icon(tab_idx: int, icon: Texture2D) 🔗
设置索引为 tab_idx
的选项卡的按钮图标。
void set_tab_disabled(tab_idx: int, disabled: bool) 🔗
如果 disabled
为 true
,则禁用索引 tab_idx
处的选项卡,使其不可交互。
如果 hidden
为 true
,则隐藏索引 tab_idx
处的选项卡,使其从选项卡区域消失。
void set_tab_icon(tab_idx: int, icon: Texture2D) 🔗
设置索引为 tab_idx
的选项卡的图标。
void set_tab_icon_max_width(tab_idx: int, width: int) 🔗
设置索引为 tab_idx
处选项卡所允许的最大图标宽度。这是在图标的默认大小和 icon_max_width 的基础上的限制。高度会根据图标的长宽比调整。
void set_tab_metadata(tab_idx: int, metadata: Variant) 🔗
为 tab_idx
的选项卡设置元数据的值,之后可以使用 get_tab_metadata() 获取。
void set_tab_title(tab_idx: int, title: String) 🔗
为索引 tab_idx
处的选项卡设置自定义标题(选项卡标题默认为索引子节点的名称)。将其设置回孩子的名字,使选项卡再次默认为该名字。
void set_tab_tooltip(tab_idx: int, tooltip: String) 🔗
设置索引 tab_idx
的选项卡的自定义工具提示文本。
注意:默认情况下,如果 tooltip
为空而选项卡文本发生了裁剪(选项卡无法完整显示所有字符),那么就会将标题作为工具提示显示。要隐藏工具提示,请将 tooltip
文本设置为 " "
。
主题属性说明
Color drop_mark_color = Color(1, 1, 1, 1)
🔗
drop_mark 图标的调制颜色。
Color font_disabled_color = Color(0.875, 0.875, 0.875, 0.5)
🔗
禁用选项卡的字体颜色。
Color font_hovered_color = Color(0.95, 0.95, 0.95, 1)
🔗
当前悬停选项卡的字体颜色。
Color font_outline_color = Color(0, 0, 0, 1)
🔗
选项卡名称的文本轮廓的色调。
Color font_selected_color = Color(0.95, 0.95, 0.95, 1)
🔗
当前所选选项卡的字体颜色。
Color font_unselected_color = Color(0.7, 0.7, 0.7, 1)
🔗
其他未被选中的选项卡的字体颜色。
选项卡图标所允许的最大宽度。这个限制应用在该图标默认大小之上,但是应用在 TabBar.set_tab_icon_max_width() 所设置的值之前。高度会根据图标比例调整。
选项卡名称与其图标之间的间距。
选项卡文字轮廓的大小。
注意:如果使用启用了 FontFile.multichannel_signed_distance_field 的字体,其 FontFile.msdf_pixel_range 必须至少设置为 outline_size 的两倍,轮廓渲染才能看起来正确。否则,轮廓可能会比预期的更早被切断。
标签栏左侧或右侧边缘的间距,取决于当前的 tab_alignment。
如果标签页被裁剪(见 clip_tabs)或者设置了弹出框(见 set_popup()),则会忽略 TabBar.ALIGNMENT_RIGHT 的边距。使用 TabBar.ALIGNMENT_CENTER 时始终忽略边距。
用于绘制选项卡名称的字体。
选项卡名称的字体大小。
左边的箭头按钮的图标,当有太多的标签无法容纳在容器的宽度内时出现。当该按钮被禁用时(即第一个标签是可见的),它显示为半透明的。
Texture2D decrement_highlight 🔗
当标签太多无法适应容器宽度时出现的左箭头按钮图标。当鼠标悬停在按钮上时使用。
图标,用于指示拖动的选项卡将被放置到哪里(见 drag_to_rearrange_enabled)。
右箭头按钮的图标,当有太多的标签无法容纳在容器的宽度内时出现。当该按钮被禁用时(即最后一个标签是可见的),它显示为半透明的。
Texture2D increment_highlight 🔗
当标签太多无法适应容器宽度时出现的右箭头按钮图标。当鼠标悬停在按钮上时使用。
菜单按钮的图标(见 set_popup())。
当光标悬停时菜单按钮的图标(见 set_popup())。
背景填充的样式。
选项卡处于禁用状态时的样式。
该 TabBar 处于聚焦状态时使用的 StyleBox。tab_focus StyleBox 显示在基础 StyleBox 之上,所以应该使用部分透明的 StyleBox,确保基础 StyleBox 仍然可见。代表轮廓或下划线的 StyleBox 可以很好地实现这个目的。要禁用聚焦的视觉效果,请指定 StyleBoxEmpty 资源。请注意,禁用聚焦的视觉效果会影响使用键盘/手柄进行导航的可用性,所以出于可访问性的原因,不建议这样做。
当前悬停的选项卡的样式。
注意:该样式将至少以与 tab_unselected 相同的宽度绘制。
当前选中的选项卡的样式。
其他未被选中的选项卡的样式。
TabBar 区域的背景填充样式。