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.

SplitContainer

Наследует: Container < Control < CanvasItem < Node < Object

Наследуется от: HSplitContainer, VSplitContainer

Контейнер, в котором элементы управления для дочерних узлов располагаются горизонтально или вертикально, и предусмотрены захваты для регулировки соотношения разделения пространства между ними.

Описание

Контейнер, который располагает дочерние элементы управления горизонтально или вертикально и создает между ними захватные элементы. Захватные элементы можно перетаскивать, чтобы изменять соотношение размеров между дочерними элементами управления.

Обучающие материалы

Свойства

bool

collapsed

false

bool

drag_area_highlight_in_editor

false

int

drag_area_margin_begin

0

int

drag_area_margin_end

0

int

drag_area_offset

0

bool

drag_nested_intersections

false

DraggerVisibility

dragger_visibility

0

bool

dragging_enabled

true

int

split_offset

0

PackedInt32Array

split_offsets

PackedInt32Array(0)

bool

touch_dragger_enabled

false

bool

vertical

false

Методы

void

clamp_split_offset(priority_index: int = 0)

Control

get_drag_area_control()

Array[Control]

get_drag_area_controls()

Свойства темы

Color

touch_dragger_color

Color(1, 1, 1, 0.3)

Color

touch_dragger_hover_color

Color(1, 1, 1, 0.6)

Color

touch_dragger_pressed_color

Color(1, 1, 1, 1)

int

autohide

1

int

minimum_grab_thickness

6

int

separation

12

Texture2D

grabber

Texture2D

h_grabber

Texture2D

h_touch_dragger

Texture2D

touch_dragger

Texture2D

v_grabber

Texture2D

v_touch_dragger

StyleBox

split_bar_background


Сигналы

drag_ended() 🔗

Генерируется, когда пользователь заканчивает перетаскивание.


drag_started() 🔗

Генерируется, когда пользователь начинает перетаскивание.


dragged(offset: int) 🔗

Вызывается при перетаскивании любого объекта пользователем.


Перечисления

enum DraggerVisibility: 🔗

DraggerVisibility DRAGGER_VISIBLE = 0

Значок раздельного перетаскивателя всегда виден, когда autohide равно false, в противном случае виден только при наведении курсора на него.

Размер значка захвата определяет минимальное separation.

Значок перетаскивателя автоматически скрывается, если длина значка захвата больше, чем разделительная полоса.

DraggerVisibility DRAGGER_HIDDEN = 1

Значок раздельного перетаскивателя никогда не отображается независимо от значения autohide.

Размер значка перетаскивателя определяет минимальное separation.

DraggerVisibility DRAGGER_HIDDEN_COLLAPSED = 2

Значок перетаскивателя для разделения не отображается, а полоса разделения свернута до нулевой толщины.


Описания свойств

bool collapsed = false 🔗

  • void set_collapsed(value: bool)

  • bool is_collapsed()

Если true, перетаскиватели будут отключены, а размеры дочерних элементов будут такими, как если бы все split_offsets было 0.


bool drag_area_highlight_in_editor = false 🔗

  • void set_drag_area_highlight_in_editor(value: bool)

  • bool is_drag_area_highlight_in_editor_enabled()

Выделяет область перетаскивания Rect2, чтобы вы могли видеть, где она находится во время разработки. Область перетаскивания золотая, если dragging_enabled равно true, и красная, если false.


int drag_area_margin_begin = 0 🔗

  • void set_drag_area_margin_begin(value: int)

  • int get_drag_area_margin_begin()

Уменьшает размер области перетаскивания и разделительной полосы split_bar_background в начале контейнера.


int drag_area_margin_end = 0 🔗

  • void set_drag_area_margin_end(value: int)

  • int get_drag_area_margin_end()

Уменьшает размер области перетаскивания и разделительной полосы split_bar_background в конце контейнера.


int drag_area_offset = 0 🔗

  • void set_drag_area_offset(value: int)

  • int get_drag_area_offset()

Смещает область перетаскивания по оси контейнера, чтобы предотвратить перекрытие области перетаскивания ScrollBar или другого выбираемого Control дочернего узла.


bool drag_nested_intersections = false 🔗

  • void set_drag_nested_intersections(value: bool)

  • bool is_dragging_nested_intersections()

Adds extra draggers at the intersection of the draggers of two SplitContainers to allow dragging both at once. This must be set to true for both SplitContainers, and one needs to be a descendant of the other. They also must be orthogonal (their vertical are different) and the descendant must be next to at least one of the ancestor's draggers (within minimum_grab_thickness).


DraggerVisibility dragger_visibility = 0 🔗

Определяет видимость перетаскивателя. Это свойство не определяет, включено ли перетаскивание или нет. Для этого используйте dragging_enabled.


bool dragging_enabled = true 🔗

  • void set_dragging_enabled(value: bool)

  • bool is_dragging_enabled()

Включает или отключает раздельное перетаскивание.


int split_offset = 0 🔗

  • void set_split_offset(value: int)

  • int get_split_offset()

Устарело: Use split_offsets instead. The first element of the array is the split offset between the first two children.

Первый элемент split_offsets.


PackedInt32Array split_offsets = PackedInt32Array(0) 🔗

Смещение для каждого перетаскиваемого элемента в пикселях. Каждое из них представляет собой смещение разделения между узлами Control до и после перетаскиваемого элемента, при этом 0 — положение по умолчанию. Положение по умолчанию определяется флагами расширения и минимальными размерами узлов Control. См. Control.size_flags_horizontal, Control.size_flags_vertical и Control.size_flags_stretch_ratio.

Если ни один из узлов Control до перетаскиваемого элемента не расширен, положение по умолчанию будет в начале SplitContainer. Если ни один из узлов Control после перетаскиваемого элемента не расширен, положение по умолчанию будет в конце SplitContainer. Если перетаскиваемый элемент находится между расширенными узлами Control, положение по умолчанию будет посередине, исходя из Control.size_flags_stretch_ratio и минимальных размеров.

Примечание: Если смещения при разделении приводят к перекрытию узлов Control, то при определении позиций приоритет будет иметь первое разделение.

Note: The returned array is copied and any changes to it will not update the original property value. See PackedInt32Array for more details.


bool touch_dragger_enabled = false 🔗

  • void set_touch_dragger_enabled(value: bool)

  • bool is_touch_dragger_enabled()

Если true, сенсорный манипулятор перетаскивания будет включен для лучшего использования на экранах меньшего размера. В отличие от стандартного захвата, этот манипулятор перекрывает дочерние элементы SplitContainer и не влияет на их минимальное разделение. Стандартный захват больше не будет отображаться, если эта опция включена.


bool vertical = false 🔗

  • void set_vertical(value: bool)

  • bool is_vertical()

Если true, SplitContainer расположит свои дочерние элементы вертикально, а не горизонтально.

Нельзя изменить при использовании HSplitContainer и VSplitContainer.


Описания метода

void clamp_split_offset(priority_index: int = 0) 🔗

Ограничивает значения split_offsets, чтобы гарантировать, что они находятся в допустимых диапазонах и не перекрываются друг с другом. При возникновении перекрытий этот метод отдает приоритет одному смещению разделения (по индексу priority_index), ограничивая все перекрывающиеся смещения разделения этим смещением.


Control get_drag_area_control() 🔗

Устарело: Use the first element of get_drag_area_controls() instead.

Возвращает область перетаскивания Control. Например, вы можете переместить предварительно настроенную кнопку в область перетаскивания Control, чтобы она перемещалась вместе с разделительной полосой. Попробуйте установить якоря Button на center до вызова reparent().

$BarnacleButton.reparent($SplitContainer.get_drag_area_control())

Примечание: Область перетаскивания Control рисуется поверх дочерних элементов SplitContainer, поэтому объекты рисования CanvasItem, вызываемые из Control, и дочерние элементы, добавленные в Control, также будут отображаться поверх дочерних элементов SplitContainer. Попробуйте установить Control.mouse_filter пользовательских дочерних элементов на Control.MOUSE_FILTER_IGNORE, чтобы предотвратить блокировку мыши при перетаскивании, если это необходимо.

Предупреждение: Это обязательный внутренний узел, его удаление и освобождение может привести к сбою.


Array[Control] get_drag_area_controls() 🔗

Возвращает массив элементов управления Control области перетаскивания. Это интерактивные узлы Control между каждым дочерним элементом. Например, это можно использовать для добавления предварительно настроенной кнопки к элементу управления Control области перетаскивания, чтобы она располагалась рядом с разделительной полосой. Попробуйте установить привязки Button в center перед вызовом Node.reparent().

$BarnacleButton.reparent($SplitContainer.get_drag_area_controls()[0])

Примечание: Элементы управления Control области перетаскивания отображаются поверх дочерних элементов SplitContainer, поэтому CanvasItem рисует объекты, вызываемые из области перетаскивания, и дочерние элементы, добавленные к ней, также будут отображаться поверх дочерних элементов SplitContainer. Попробуйте установить для элемента Control.mouse_filter пользовательских дочерних элементов значение Control.MOUSE_FILTER_IGNORE, чтобы предотвратить блокировку перетаскивания мыши, если это необходимо.

Предупреждение: Это необходимые внутренние узлы, их удаление или освобождение может привести к сбою.


Описания свойств темы

Color touch_dragger_color = Color(1, 1, 1, 0.3) 🔗

Цвет сенсорного перетаскивателя.


Color touch_dragger_hover_color = Color(1, 1, 1, 0.6) 🔗

Цвет сенсорного ползунка при наведении курсора.


Color touch_dragger_pressed_color = Color(1, 1, 1, 1) 🔗

Цвет сенсорного ползунка при нажатии.


int autohide = 1 🔗

Логическое Bool значение. Если 1 (true), элементы захвата будут автоматически скрываться, когда они не находятся под курсором. Если 0 (false), элементы захвата всегда видны. dragger_visibility должен быть DRAGGER_VISIBLE.


int minimum_grab_thickness = 6 🔗

Минимальная толщина области, на которую пользователи могут щелкнуть, чтобы захватить разделительную полосу. Это гарантирует, что разделительную полосу можно будет перетаскивать, даже если размер separation или h_grabber / v_grabber слишком мал для удобного выбора.


int separation = 12 🔗

Толщина разделительной полосы, то есть расстояние между каждым дочерним элементом контейнера. Это значение переопределяется размером значка захвата, если dragger_visibility установлено в DRAGGER_VISIBLE или DRAGGER_HIDDEN, и separation меньше размера значка захвата по той же оси.

Примечание: Чтобы получить значения separation меньше размера значка захвата, например, 1 px тонкой линии, установите h_grabber или v_grabber в новое значение ImageTexture, что фактически устанавливает размер значка захвата равным 0 px.


Texture2D grabber 🔗

Значок, используемый для элементов захвата, отображаемых в разделителях. Он используется только в HSplitContainer и VSplitContainer. Для SplitContainer см. h_grabber и v_grabber.


Texture2D h_grabber 🔗

Значок, используемый для элементов захвата, отображаемых в разделительных линиях, когда vertical имеет значение false.


Texture2D h_touch_dragger 🔗

Значок, используемый для маркера перетаскивания, когда touch_dragger_enabled имеет значение true, а vertical имеет значение false.


Texture2D touch_dragger 🔗

Значок, используемый для ручки перетаскивания, когда touch_dragger_enabled равен true. Используется только в HSplitContainer и VSplitContainer. Для SplitContainer см. h_touch_dragger и v_touch_dragger.


Texture2D v_grabber 🔗

Значок, используемый для элементов захвата, отображаемых в разделительных линиях, когда vertical имеет значение true.


Texture2D v_touch_dragger 🔗

Значок, используемый для маркера перетаскивания, когда touch_dragger_enabled имеет значение true и vertical имеет значение true.


StyleBox split_bar_background 🔗

Определяет фон разделенной полосы, если ее толщина больше нуля.