Up to date
This page is up to date for Godot 4.2
.
If you still find outdated information, please open an issue.
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 ( int tab_idx ) const |
|
get_tab_control ( int tab_idx ) const |
|
get_tab_count ( ) const |
|
get_tab_icon ( int tab_idx ) const |
|
get_tab_idx_at_point ( Vector2 point ) const |
|
get_tab_idx_from_control ( Control control ) const |
|
get_tab_metadata ( int tab_idx ) const |
|
get_tab_title ( int tab_idx ) const |
|
is_tab_disabled ( int tab_idx ) const |
|
is_tab_hidden ( int tab_idx ) const |
|
void |
|
void |
set_tab_button_icon ( int tab_idx, Texture2D icon ) |
void |
set_tab_disabled ( int tab_idx, bool disabled ) |
void |
set_tab_hidden ( int tab_idx, bool hidden ) |
void |
set_tab_icon ( int tab_idx, Texture2D icon ) |
void |
set_tab_metadata ( int tab_idx, Variant metadata ) |
void |
set_tab_title ( int tab_idx, String title ) |
主题属性¶
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
信号¶
active_tab_rearranged ( int idx_to )
通过鼠标拖动重新排列活动选项卡时发出。见 drag_to_rearrange_enabled。
pre_popup_pressed ( )
单击 TabContainer 的 Popup 按钮时发出。有关详细信息,请参阅 set_popup。
tab_button_pressed ( int tab )
用户点击该选项卡上的按钮图标时发出。
tab_changed ( int tab )
切换到另一个选项卡时发出。
tab_clicked ( int tab )
单击选项卡时发出,即使它是当前选项卡。
tab_hovered ( int tab )
当鼠标悬停选项卡时发出。
tab_selected ( int tab )
通过点击、定向输入、或脚本选中某个选项卡时发出,即便该选项卡本来就是当前选项卡。
属性说明¶
bool all_tabs_in_front = false
如果为 true
,所有选项卡都会被绘制在面板之前。如果为 false
,未激活的选项卡会被绘制在面板之后。
bool clip_tabs = true
如果为 true
,则会隐藏超出该节点宽度的选项卡,改为显示两个导航按钮。否则,会更新该节点的最小尺寸,让所有选项卡均可见。
int current_tab = 0
当前选项卡的索引。设置后,此索引的 Control 节点的 visible
属性会被设为 true
,其他所有都设置为 false
。
bool drag_to_rearrange_enabled = false
如果为 true
,可以通过鼠标拖动重新排列选项卡。
AlignmentMode tab_alignment = 0
void set_tab_alignment ( AlignmentMode value )
AlignmentMode get_tab_alignment ( )
设置选项卡的放置位置。详情见 AlignmentMode。
FocusMode tab_focus_mode = 2
内部 TabBar 节点的焦点访问模式。
int tabs_rearrange_group = -1
具有相同重新排列组 ID 的 TabContainer 将允许在它们之间拖动选项卡。使用 drag_to_rearrange_enabled 启用拖动。
将该属性设置为 -1
将禁用 TabContainer 之间的重新排列。
bool tabs_visible = true
如果为 true
,选项卡可见。如果 false
,选项卡的内容和标题被隐藏。
如果为 true
,隐藏的子 Control 节点在总数中考虑其最小大小,而不是仅考虑当前可见的一个。
方法说明¶
Control get_current_tab_control ( ) const
返回位于活动选项卡索引处的子 Control 节点。
Popup get_popup ( ) const
如果已经使用 set_popup 设置了 Popup 节点实例,则返回该节点实例。
警告:这是一个必需的内部节点,移除和释放它可能会导致崩溃。如果希望隐藏它或它的任何子项,请使用它们的 Window.visible 属性。
int get_previous_tab ( ) const
返回上一个活动选项卡的索引。
TabBar get_tab_bar ( ) const
返回这个容器中包含的 TabBar。
警告:这是一个必需的内部节点,对其进行移除和释放或者编辑其中的选项卡可能会导致崩溃。如果你想编辑选项卡,请使用 TabContainer 提供的方法。
Texture2D get_tab_button_icon ( int tab_idx ) const
返回索引为 tab_idx
的选项卡的按钮图标。
Control get_tab_control ( int tab_idx ) const
返回索引为 tab_idx
的选项卡的 Control 节点。
int get_tab_count ( ) const
返回选项卡的数量。
Texture2D get_tab_icon ( int tab_idx ) const
返回索引 tab_idx
处选项卡的 Texture2D,如果该选项卡没有 Texture2D,则返回 null
。
int get_tab_idx_at_point ( Vector2 point ) const
返回位于局部坐标 point
处的选项卡的索引。如果该点在控件边界之外或查询位置没有选项卡,则返回 -1
。
int get_tab_idx_from_control ( Control control ) const
返回与给定的 control
绑定的标签的索引。该控件必须为 TabContainer 的子节点。
Variant get_tab_metadata ( int tab_idx ) const
返回索引为 tab_idx
的选项卡的元数据的值,由 set_tab_metadata 设置。如果之前没有设置元数据,则默认返回 null
。
String get_tab_title ( int tab_idx ) const
返回索引 tab_idx
处选项卡的标题。选项卡的标题默认为索引子节点的名称,但可以用 set_tab_title 覆盖。
bool is_tab_disabled ( int tab_idx ) const
如果索引 tab_idx
处的选项卡被禁用,则返回 true
。
如果索引 tab_idx
处的选项卡被隐藏,则返回 true
。
bool select_next_available ( )
选择索引大于当前所选选项卡索引的第一个可用选项卡。如果选项卡选择发生改变,则返回 true
。
bool select_previous_available ( )
选择索引低于当前所选选项卡索引的第一个可用选项卡。如果选项卡选择发生改变,则返回 true
。
void set_popup ( Node popup )
如果在一个 Popup 节点实例上设置,则一个弹出菜单图标会出现在该 TabContainer 的右上角(将其设置为 null
将使其消失)。点击它将展开该 Popup 节点。
void set_tab_button_icon ( int tab_idx, Texture2D icon )
设置索引为 tab_idx
的选项卡的按钮图标。
void set_tab_disabled ( int tab_idx, bool disabled )
如果 disabled
为 true
,则禁用索引 tab_idx
处的选项卡,使其不可交互。
如果 hidden
为 true
,则隐藏索引 tab_idx
处的选项卡,使其从选项卡区域消失。
void set_tab_icon ( int tab_idx, Texture2D icon )
设置索引为 tab_idx
的选项卡的图标。
void set_tab_metadata ( int tab_idx, Variant metadata )
为 tab_idx
的选项卡设置元数据的值,之后可以使用 get_tab_metadata 获取。
void set_tab_title ( int tab_idx, String title )
为索引 tab_idx
处的选项卡设置自定义标题(选项卡标题默认为索引子节点的名称)。将其设置回孩子的名字,使选项卡再次默认为该名字。
主题属性说明¶
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(1, 1, 1, 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)
其他未被选中的选项卡的字体颜色。
int icon_max_width = 0
选项卡图标所允许的最大宽度。这个限制应用在该图标默认大小之上,但是应用在 TabBar.set_tab_icon_max_width 所设置的值之前。高度会根据图标比例调整。
int icon_separation = 4
选项卡名称与其图标之间的间距。
int outline_size = 0
选项卡文字轮廓的大小。
注意:如果使用启用了 FontFile.multichannel_signed_distance_field 的字体,其 FontFile.msdf_pixel_range 必须至少设置为 outline_size 的两倍,轮廓渲染才能看起来正确。否则,轮廓可能会比预期的更早被切断。
int side_margin = 8
标签栏左侧或右侧边缘的间距,取决于当前的 tab_alignment。
如果标签页被裁剪(见 clip_tabs)或者设置了弹出框(见 set_popup),则会忽略 TabBar.ALIGNMENT_RIGHT 的边距。使用 TabBar.ALIGNMENT_CENTER 时始终忽略边距。
Font font
用于绘制选项卡名称的字体。
int font_size
选项卡名称的字体大小。
Texture2D decrement
左边的箭头按钮的图标,当有太多的标签无法容纳在容器的宽度内时出现。当该按钮被禁用时(即第一个标签是可见的),它显示为半透明的。
Texture2D decrement_highlight
当标签太多无法适应容器宽度时出现的左箭头按钮图标。当鼠标悬停在按钮上时使用。
Texture2D drop_mark
图标,用于指示拖动的选项卡将被放置到哪里(见 drag_to_rearrange_enabled)。
Texture2D increment
右箭头按钮的图标,当有太多的标签无法容纳在容器的宽度内时出现。当该按钮被禁用时(即最后一个标签是可见的),它显示为半透明的。
Texture2D increment_highlight
当标签太多无法适应容器宽度时出现的右箭头按钮图标。当鼠标悬停在按钮上时使用。
菜单按钮的图标(见 set_popup)。
当光标悬停时菜单按钮的图标(见 set_popup)。
StyleBox panel
背景填充的样式。
StyleBox tab_disabled
选项卡处于禁用状态时的样式。
StyleBox tab_focus
该 TabBar 处于聚焦状态时使用的 StyleBox。tab_focus StyleBox 显示在基础 StyleBox 之上,所以应该使用部分透明的 StyleBox,确保基础 StyleBox 仍然可见。代表轮廓或下划线的 StyleBox 可以很好地实现这个目的。要禁用聚焦的视觉效果,请指定 StyleBoxEmpty 资源。请注意,禁用聚焦的视觉效果会影响使用键盘/手柄进行导航的可用性,所以出于可访问性的原因,不建议这样做。
StyleBox tab_hovered
当前悬停的选项卡的样式。
注意:该样式将至少以与 tab_unselected 相同的宽度绘制。
StyleBox tab_selected
当前选中的选项卡的样式。
StyleBox tab_unselected
其他未被选中的选项卡的样式。
StyleBox tabbar_background
TabBar 区域的背景填充样式。