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()

Додає додаткові маркери перетягування на перетині маркерів двох SplitContainers, щоб можна було перетягувати обидва одночасно. Це потрібно встановити на true для обох SplitContainers, і один з них повинен бути нащадком іншого. Вони також повинні бути ортогональними (їхні vertical відрізняються), а нащадок повинен знаходитися поруч принаймні з одним з перетягувачів предка (в межах 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() 🔗

Повертає Array елементів керування області перетягування 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 🔗

Логічне значення. Якщо 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 🔗

Визначає фон розділеної смуги, якщо її товщина більша за нуль.