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 🔗
决定拆分条厚度大于零时的背景。