ScrollContainer

继承: Container < Control < Item < Object

派生: EditorInspector

用于在需要时为子控件提供滚动条的容器。

描述

用于在需要时为子控件提供滚动条的容器。滚动条将自动绘制在右侧(垂直)或底部(水平),并允许拖动以在ScrollContainer中移动可视控件(及其子控件)。滚动条还将根据控件的Control.custom_minimum_size相对于ScrollContainer自动调整抓取器的大小。

属性

方法

主题属性


信号

scroll_ended() 🔗

用触摸事件*拖动可滚动区域时滚动停止时发出。此信号是*而不是通过拖动滚动条滚动、使用鼠标滚轮滚动或使用键盘/应用手柄事件滚动时发出的。

注意:此信号仅在Android或iOS或桌面/Web平台上启用ProjectSettings.input_devices/pointing/emulate_touch_from_mouse时发出。


scroll_started() 🔗

当拖动可滚动区域w时开始滚动时发出触摸事件。此信号不是通过拖动滚动条滚动、使用鼠标滚轮滚动或使用键盘/应用手柄事件滚动时发出的

注意:此信号仅在Android或iOS或桌面/Web平台上启用ProjectSettings.input_devices/pointing/emulate_touch_from_mouse时发出。


枚举

enum ScrollMode: 🔗

ScrollMode SCROLL_MODE_DISABLED = 0

滚动禁用,滚动条将不可见。

ScrollMode SCROLL_MODE_AUTO = 1

启用滚动,滚动条仅在必要时可见,即容器的内容大于容器。

ScrollMode SCROLL_MODE_SHOW_ALWAYS = 2

启用滚动,滚动条将始终可见。

ScrollMode SCROLL_MODE_SHOW_NEVER = 3

启用滚动,滚动条将被隐藏。

ScrollMode SCROLL_MODE_RESERVE = 4

结合SCROLL_MODE_AUTOSCROLL_MODE_SHOW_ALWAYS。滚动条仅在必要时可见,但内容大小会像始终可见一样进行调整。无论滚动条是否可见,这对于确保内容大小保持不变都很有用。


属性说明

bool draw_focus_border = false 🔗

  • void set_draw_focus_border(value: bool)

  • bool get_draw_focus_border()

如果true,则在ScrollContainer或其后代节点之一被聚焦时绘制focus


bool follow_focus = false 🔗

  • void set_follow_focus(value: bool)

  • bool is_following_focus()

如果true,ScrollContainer将自动滚动到焦点子级(包括间接子级)以确保它们完全可见。


ScrollMode horizontal_scroll_mode = 1 🔗

控制是否可以使用水平滚动条以及何时应该可见。有关选项,请参阅ScrollMode


int scroll_deadzone = 0 🔗

  • void set_deadzone(value: int)

  • int get_deadzone()

触摸滚动的死区。较低的死区使滚动更加灵敏。


int scroll_horizontal = 0 🔗

  • void set_h_scroll(value: int)

  • int get_h_scroll()

当前水平滚动值。

注意:如果在 Item.iStart() 函数或更早阶段设置此值,需要用 Object.set_deferred() 包装,因为滚动条的 Range.max_value 尚未初始化


float scroll_horizontal_custom_step = -1.0 🔗

  • void set_horizontal_custom_step(value: float)

  • float get_horizontal_custom_step()

覆盖单击内部滚动条的水平递增和递减按钮或在ScrollBar聚焦时使用箭头键时使用的ScrollBar.custom_step


int scroll_vertical = 0 🔗

  • void set_v_scroll(value: int)

  • int get_v_scroll()

当前垂直滚动值。

注意:scroll_horizontal一样,尽早设置它需要延迟。

func _ready():
    set_deferred("scroll_horizontal", 600)

float scroll_vertical_custom_step = -1.0 🔗

  • void set_vertical_custom_step(value: float)

  • float get_vertical_custom_step()

覆盖单击内部滚动条的垂直递增和递减按钮或在ScrollBar聚焦时使用箭头键时使用的ScrollBar.custom_step


ScrollMode vertical_scroll_mode = 1 🔗

控制是否可以使用垂直滚动条以及何时应该可见。有关选项,请参阅ScrollMode


方法说明

void ensure_control_visible(control: Control) 🔗

确保给定的 control 可见(必须是 ScrollContainer 的直接或间接子节点)。由 follow_focus 使用。

Note: 这对在同一帧中刚添加的节点不起作用。如果你想滚动到新添加的子节点,必须使用 SceneTree.process_frame 等待下一帧。:

add_child(child_node)
await get_tree().process_frame
ensure_control_visible(child_node)

HScrollBar get_h_scroll_bar() 🔗

返回此ScrollContainer的水平滚动条HScrollBar

警告:这是一个必需的内部节点,删除和释放它可能会导致崩溃。如果您希望禁用或隐藏滚动条,您可以使用horizontal_scroll_mode


VScrollBar get_v_scroll_bar() 🔗

返回此ScrollContainer的垂直滚动条VScrollBar

警告:这是一个必需的内部节点,删除和释放它可能会导致崩溃。如果您希望禁用或隐藏滚动条,您可以使用vertical_scroll_mode


主题属性说明

StyleBox focus 🔗

ScrollContainer的焦点边框StyleBox。仅当draw_focus_bordertrue时使用。


StyleBox panel 🔗

ScrollContainer的背景StyleBox