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 |
clamp_split_offset(priority_index: int = 0) |
Свойства темы
|
||
|
||
|
||
|
||
|
||
|
||
Сигналы
drag_ended() 🔗
Генерируется, когда пользователь заканчивает перетаскивание.
drag_started() 🔗
Генерируется, когда пользователь начинает перетаскивание.
Вызывается при перетаскивании любого объекта пользователем.
Перечисления
enum DraggerVisibility: 🔗
DraggerVisibility DRAGGER_VISIBLE = 0
Значок раздельного перетаскивателя всегда виден, когда autohide равно false, в противном случае виден только при наведении курсора на него.
Размер значка захвата определяет минимальное separation.
Значок перетаскивателя автоматически скрывается, если длина значка захвата больше, чем разделительная полоса.
Значок раздельного перетаскивателя никогда не отображается независимо от значения autohide.
Размер значка перетаскивателя определяет минимальное separation.
Значок перетаскивателя для разделения не отображается, а полоса разделения свернута до нулевой толщины.
Описания свойств
Если true, перетаскиватели будут отключены, а размеры дочерних элементов будут такими, как если бы все split_offsets было 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 дочернего узла.
bool drag_nested_intersections = false 🔗
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 🔗
void set_dragger_visibility(value: DraggerVisibility)
DraggerVisibility get_dragger_visibility()
Определяет видимость перетаскивателя. Это свойство не определяет, включено ли перетаскивание или нет. Для этого используйте dragging_enabled.
bool dragging_enabled = true 🔗
Включает или отключает раздельное перетаскивание.
Устарело: 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) 🔗
void set_split_offsets(value: PackedInt32Array)
PackedInt32Array get_split_offsets()
Смещение для каждого перетаскиваемого элемента в пикселях. Каждое из них представляет собой смещение разделения между узлами 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 🔗
Если true, сенсорный манипулятор перетаскивания будет включен для лучшего использования на экранах меньшего размера. В отличие от стандартного захвата, этот манипулятор перекрывает дочерние элементы SplitContainer и не влияет на их минимальное разделение. Стандартный захват больше не будет отображаться, если эта опция включена.
Если 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) 🔗
Цвет сенсорного ползунка при нажатии.
Логическое Bool значение. Если 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.
Значок, используемый для элементов захвата, отображаемых в разделителях. Он используется только в HSplitContainer и VSplitContainer. Для SplitContainer см. h_grabber и v_grabber.
Значок, используемый для элементов захвата, отображаемых в разделительных линиях, когда vertical имеет значение false.
Значок, используемый для маркера перетаскивания, когда touch_dragger_enabled имеет значение true, а vertical имеет значение false.
Значок, используемый для ручки перетаскивания, когда touch_dragger_enabled равен true. Используется только в HSplitContainer и VSplitContainer. Для SplitContainer см. h_touch_dragger и v_touch_dragger.
Значок, используемый для элементов захвата, отображаемых в разделительных линиях, когда vertical имеет значение true.
Значок, используемый для маркера перетаскивания, когда touch_dragger_enabled имеет значение true и vertical имеет значение true.
StyleBox split_bar_background 🔗
Определяет фон разделенной полосы, если ее толщина больше нуля.