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...
SplitContainer
继承: Container < Control < CanvasItem < Node < Object
派生: HSplitContainer, VSplitContainer
将两个子控件垂直或水平分隔的容器,提供了用于调整分隔比例的抓取器。
描述
仅接受两个子控件的容器,会将它们垂直或水平排列,在中间创建一个分隔条。分隔条可以拖拽,从而改变两个控件的大小关系。
教程
属性
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
方法
void |
|
主题属性
|
||
|
||
|
||
信号
drag_ended() 🔗
用户结束拖拽时发出。
drag_started() 🔗
用户开始拖拽时发出。
当用户拖动拖动器时发出。
枚举
enum DraggerVisibility: 🔗
DraggerVisibility DRAGGER_VISIBLE = 0
当 autohide 为 false
时,拆分拖动器始终可见,否则仅在鼠标在拖动器上悬停时可见。
拖动器图标的大小决定了最小间隔 separation。
拖动器图标如果比拆分条长,就会自动隐藏。
拆分拖动器图标始终不可见,无视 autohide 的值。
拖动器图标的大小决定了最小间隔 separation。
拆分拖动器图标不可见,拆分条粗细折叠为零。
属性说明
如果为 true
,则会禁用拖动器,子节点会根据 split_offset 为 0
时的情况来调整大小。
bool drag_area_highlight_in_editor = false
🔗
高亮拖动区域 Rect2,便于在开发时查看位置。dragging_enabled 为 true
时拖动区域为金色,为 false
时则为红色。
int drag_area_margin_begin = 0
🔗
减少可拖动区域和拆分条 split_bar_background 在容器起始侧的大小。
int drag_area_margin_end = 0
🔗
减少可拖动区域和拆分条 split_bar_background 在容器结尾侧的大小。
将拖动区域在容器轴向上进行偏移,防止拖动区域与 ScrollBar 或其他子节点的可选中 Control 发生重叠。
DraggerVisibility dragger_visibility = 0
🔗
void set_dragger_visibility(value: DraggerVisibility)
DraggerVisibility get_dragger_visibility()
决定拖动器是否可见。详见 DraggerVisibility。该属性无法决定拖动器是否启用,这一需求请使用 dragging_enabled。
bool dragging_enabled = true
🔗
启用或禁用拆分拖拽。
两个 Control 之间拆分的初始偏移量,0
位于第一个 Control 的末尾。
如果为 true
,则该 SplitContainer 会垂直排列其子代,而不是水平排列。
在使用 HSplitContainer 和 VSplitContainer 时无法改变。
方法说明
void clamp_split_offset() 🔗
限制 split_offset 值不超出当前可能的最小值和最大值。
Control get_drag_area_control() 🔗
返回拖拽区域 Control。例如你可以把一个预先配置好的按钮放到拖拽区域 Control 中,这样这个按钮就会跟随拆分条移动。调用 reparent()
前请尝试将 Button 的锚点设置为 center
。
$BarnacleButton.reparent($SplitContainer.get_drag_area_control())
注意:拖拽区域 Control 绘制在 SplitContainer 的子节点之上,因此 Control 调用 CanvasItem 绘制方法所绘制的内容和添加至 Control 的子节点也会显示在 SplitContainer 的子节点之上。如果需要阻止鼠标拖动,请尝试将自定义子节点的 Control.mouse_filter 设置为 Control.MOUSE_FILTER_IGNORE。
警告:这是必要的内部节点,将其移除或释放都可能造成崩溃。
主题属性说明
布尔值。如果为 1
(true
),则拖动器不在鼠标下方时会自动隐藏。如果为 0
(false
)则始终可见。dragger_visibility 必须为 DRAGGER_VISIBLE。
int minimum_grab_thickness = 6
🔗
拆分条上用户可点击抓取区域的最小厚度。能够确保拆分条在 separation 或 h_grabber / v_grabber 过窄、难以选中时仍然可以拖动。
拆分条的粗细,即容器中两个子节点的间隙。如果 dragger_visibility 为 DRAGGER_VISIBLE 或者为 DRAGGER_HIDDEN 的同时 separation 比拖动器图标相应方向的大小要小,这个粗细就会被拖动器图标的大小覆盖。
注意:如果要让 separation 比拖动器图标大小要小,例如想要设成 1 px
的细线,请将 h_grabber 或 v_grabber 设为新的 ImageTexture,这样就把拖动器图标的大小设为了 0 px
。
在中间区域绘制的抓取图标。
vertical 为 false
时绘制在中间区域的抓取器图标。
vertical 为 true
时绘制在中间区域的抓取器图标。
StyleBox split_bar_background 🔗
决定拆分条厚度大于零时的背景。