Tree
Наследует: Control < CanvasItem < Node < Object
Элемент управления, используемый для отображения набора внутренних TreeItem в иерархической структуре.
Описание
Элемент управления, используемый для отображения набора внутренних TreeItem в иерархической структуре. Элементы дерева можно выбирать, разворачивать и сворачивать. Дерево может иметь несколько столбцов с пользовательскими элементами управления, такими как LineEdit, кнопки и всплывающие окна. Это может быть полезно для структурированных отображений и взаимодействий.
Деревья строятся с помощью кода, используя объекты TreeItem для создания структуры. У них один корень, но несколько корней можно имитировать с помощью hide_root:
func _ready():
var tree = Tree.new()
var root = tree.create_item()
tree.hide_root = true
var child1 = tree.create_item(root)
var child2 = tree.create_item(root)
var subchild1 = tree.create_item(child1)
subchild1.set_text(0, "Subchild1")
public override void _Ready()
{
var tree = new Tree();
TreeItem root = tree.CreateItem();
tree.HideRoot = true;
TreeItem child1 = tree.CreateItem(root);
TreeItem child2 = tree.CreateItem(root);
TreeItem subchild1 = tree.CreateItem(child1);
subchild1.SetText(0, "Subchild1");
}
Чтобы перебрать все объекты TreeItem в объекте Tree, используйте TreeItem.get_next() и TreeItem.get_first_child() после получения корня с помощью get_root(). Вы можете использовать Object.free() для TreeItem, чтобы удалить его из Tree.
Инкрементный поиск: Как и ItemList и PopupMenu, Tree поддерживает поиск в списке, пока элемент управления находится в фокусе. Нажмите клавишу, которая совпадает с первой буквой имени элемента, чтобы выбрать первый элемент, начинающийся с данной буквы. После этого есть два способа выполнить инкрементный поиск: 1) Нажмите ту же клавишу еще раз до истечения времени ожидания, чтобы выбрать следующий элемент, начинающийся с той же буквы. 2) Нажмите клавиши с буквами, которые совпадают с остальной частью слова до истечения времени ожидания, чтобы сопоставить, чтобы напрямую выбрать нужный элемент. Оба эти действия будут сброшены в начало списка, если длительность тайм-аута прошла с момента регистрации последнего нажатия клавиши. Вы можете настроить длительность тайм-аута, изменив ProjectSettings.gui/timers/incremental_search_max_interval_msec.
Свойства
|
||
|
||
|
||
|
||
clip_contents |
|
|
|
||
|
||
|
||
|
||
focus_mode |
|
|
|
||
|
||
|
||
|
||
|
Методы
Свойства темы
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Сигналы
button_clicked(item: TreeItem, column: int, id: int, mouse_button_index: int) 🔗
Вызывается при нажатии кнопки на дереве (см. TreeItem.add_button()).
cell_selected() 🔗
Выдается при выборе ячейки.
check_propagated_to_item(item: TreeItem, column: int) 🔗
Вызывается при вызове TreeItem.propagate_check(). Подключитесь к этому сигналу для обработки элементов, затронутых вызовом TreeItem.propagate_check(). Порядок обработки затронутых элементов следующий: элемент, вызвавший метод, дочерние элементы этого элемента и, наконец, родительские элементы этого элемента.
column_title_clicked(column: int, mouse_button_index: int) 🔗
Вызывается при щелчке по заголовку столбца с помощью @GlobalScope.MOUSE_BUTTON_LEFT или @GlobalScope.MOUSE_BUTTON_RIGHT.
custom_item_clicked(mouse_button_index: int) 🔗
Вызывается при щелчке кнопкой мыши по элементу с TreeItem.CELL_MODE_CUSTOM.
custom_popup_edited(arrow_clicked: bool) 🔗
Вызывается при щелчке по ячейке с TreeItem.CELL_MODE_CUSTOM для редактирования.
empty_clicked(click_position: Vector2, mouse_button_index: int) 🔗
Вызывается при щелчке кнопкой мыши в пустом месте дерева.
item_activated() 🔗
Вызывается при двойном щелчке по элементу или выборе с помощью события ввода ui_accept (например, с помощью Enter или Space на клавиатуре).
item_collapsed(item: TreeItem) 🔗
Вызывается при развёртывании или свёртывании элемента путём нажатия на стрелку сворачивания или посредством кода.
Примечание: Несмотря на название, этот сигнал также генерируется при развёртывании элемента.
item_edited() 🔗
Выдается при редактировании элемента.
item_icon_double_clicked() 🔗
Вызывается при двойном щелчке по значку элемента. Для сигнала, который вызывается при двойном щелчке по любой части элемента, см. item_activated.
item_mouse_selected(mouse_position: Vector2, mouse_button_index: int) 🔗
Вызывается при выборе элемента кнопкой мыши.
item_selected() 🔗
Выдается при выборе элемента.
multi_selected(item: TreeItem, column: int, selected: bool) 🔗
Выдается вместо item_selected, если select_mode установлен на SELECT_MULTI.
nothing_selected() 🔗
Генерируется, когда щелчок левой кнопкой мыши не приводит к выбору какого-либо элемента.
Перечисления
enum SelectMode: 🔗
SelectMode SELECT_SINGLE = 0
Позволяет выбирать одну ячейку за раз. С точки зрения элементов, разрешено выбирать только один элемент. И в выбранном элементе выбран только один столбец.
Курсор фокуса всегда скрыт в этом режиме, но он располагается на текущем выборе, делая текущий выбранный элемент текущим сфокусированным элементом.
SelectMode SELECT_ROW = 1
Позволяет выбирать одну строку за раз. С точки зрения элементов, разрешено выбирать только один элемент. И все столбцы выбираются в выбранном элементе.
Курсор фокуса всегда скрыт в этом режиме, но он располагается в первом столбце текущего выбора, делая текущий выбранный элемент текущим сфокусированным элементом.
SelectMode SELECT_MULTI = 2
Позволяет выбирать несколько ячеек одновременно. С точки зрения элементов, допускается выбор нескольких элементов. И в каждом выбранном элементе может быть выбрано несколько столбцов.
Курсор фокуса виден в этом режиме, элемент или столбец под курсором не обязательно выбран.
enum DropModeFlags: 🔗
DropModeFlags DROP_MODE_DISABLED = 0
Отключает все разделы перетаскивания, но по-прежнему позволяет обнаружить раздел сброса «on item» с помощью get_drop_section_at_position().
Примечание: Это флаг по умолчанию, он не действует в сочетании с другими флагами.
DropModeFlags DROP_MODE_ON_ITEM = 1
Включает раздел перетаскивания «на элементе». Этот раздел перетаскивания охватывает весь элемент.
В сочетании с DROP_MODE_INBETWEEN этот раздел перетаскивания уменьшает высоту вдвое и остается центрированным по вертикали.
DropModeFlags DROP_MODE_INBETWEEN = 2
Включает разделы выпадения «над элементом» и «под элементом». Раздел выпадения «над элементом» охватывает верхнюю половину элемента, а раздел выпадения «под элементом» охватывает нижнюю половину.
В сочетании с DROP_MODE_ON_ITEM эти разделы выпадения уменьшают высоту вдвое и остаются сверху/снизу соответственно.
Описания свойств
Если true, текущая выбранная ячейка может быть выбрана снова.
bool allow_rmb_select = false 🔗
Если true, щелчок правой кнопкой мыши может выбирать элементы.
Если true, позволяет осуществлять навигацию по Tree с помощью буквенных клавиш посредством инкрементного поиска.
Если true, элементы дерева без назначенной подсказки отображают свой текст в качестве подсказки. См. также TreeItem.get_tooltip_text() и TreeItem.get_button_tooltip_text().
bool column_titles_visible = false 🔗
Если true, заголовки столбцов видны.
Количество столбцов.
Режим сброса как комбинация флагов OR. См. константы DropModeFlags. После сброса возвращается к DROP_MODE_DISABLED. Рекомендуется устанавливать это во время Control._can_drop_data().
Это управляет разделами сброса, т. е. принятием решения и отрисовкой возможных мест сброса на основе положения мыши.
bool enable_recursive_folding = true 🔗
Если true, рекурсивное сворачивание включено для этого Tree. Удерживание Shift при нажатии стрелки сворачивания или использование сочетаний клавиш ui_right/ui_left сворачивает или разворачивает TreeItem и всех его потомков.
Если true, то складная стрелка скрыта.
Если true, корень дерева скрыт.
bool scroll_horizontal_enabled = true 🔗
Если true, включается горизонтальная прокрутка.
bool scroll_vertical_enabled = true 🔗
Если true, включается вертикальная прокрутка.
SelectMode select_mode = 0 🔗
void set_select_mode(value: SelectMode)
SelectMode get_select_mode()
Позволяет сделать один или несколько выборов. См. константы SelectMode.
Описания метода
void clear() 🔗
Очищает дерево. Удаляет все элементы.
TreeItem create_item(parent: TreeItem = null, index: int = -1) 🔗
Создает элемент в дереве и добавляет его как дочерний элемент parent, который может быть либо допустимым TreeItem, либо null.
Если parent равен null, корневой элемент будет родителем, или новый элемент будет сам корнем, если дерево пустое.
Новый элемент будет index-ым дочерним элементом parent, или он будет последним дочерним элементом, если не хватает родственных элементов.
void deselect_all() 🔗
Отменяет выбор всех элементов дерева (строк и столбцов). В режиме SELECT_MULTI также удаляет курсор выбора.
bool edit_selected(force_edit: bool = false) 🔗
Редактирует выбранный элемент дерева, как будто он был нажат.
Либо элемент должен быть установлен как редактируемый с помощью TreeItem.set_editable(), либо force_edit должен быть true.
Возвращает true, если элемент можно редактировать. Не выполняется, если ни один элемент не выбран.
void ensure_cursor_is_visible() 🔗
Делает текущую сфокусированную ячейку видимой.
Это прокрутит дерево, если необходимо. В режиме SELECT_ROW это не будет выполнять горизонтальную прокрутку, так как все ячейки в выбранной строке сфокусированы логически.
Примечание: Несмотря на название этого метода, сам курсор фокуса виден только в режиме SELECT_MULTI.
int get_button_id_at_position(position: Vector2) const 🔗
Возвращает идентификатор кнопки в position или -1, если кнопки нет.
int get_column_at_position(position: Vector2) const 🔗
Возвращает индекс столбца в position или -1, если элемента нет.
int get_column_expand_ratio(column: int) const 🔗
Возвращает коэффициент расширения, назначенный столбцу.
String get_column_title(column: int) const 🔗
Возвращает заголовок столбца.
HorizontalAlignment get_column_title_alignment(column: int) const 🔗
Возвращает выравнивание заголовка столбца.
TextDirection get_column_title_direction(column: int) const 🔗
Возвращает базовое направление написания заголовка столбца.
String get_column_title_language(column: int) const 🔗
Возвращает код языка заголовка столбца.
int get_column_width(column: int) const 🔗
Возвращает ширину столбца в пикселях.
Rect2 get_custom_popup_rect() const 🔗
Возвращает прямоугольник для пользовательских всплывающих окон (popup). Помощник для создания пользовательских элементов управления ячейками, которые отображают всплывающее окно. См. TreeItem.set_cell_mode().
int get_drop_section_at_position(position: Vector2) const 🔗
Возвращает раздел перетаскивания в position или -100, если элемента нет.
Значения -1, 0 или 1 будут возвращены для разделов перетаскивания "выше элемента", "на элементе" и "ниже элемента" соответственно. Описание каждого раздела перетаскивания см. в DropModeFlags.
Чтобы получить элемент, к которому относится возвращаемый раздел перетаскивания, используйте get_item_at_position().
Возвращает текущий редактируемый элемент. Может использоваться с item_edited для получения измененного элемента.
func _ready():
$Tree.item_edited.connect(on_Tree_item_edited)
func on_Tree_item_edited():
print($Tree.get_edited()) # Этот элемент только что был отредактирован (например, проверен).
public override void _Ready()
{
GetNode<Tree>("Tree").ItemEdited += OnTreeItemEdited;
}
public void OnTreeItemEdited()
{
GD.Print(GetNode<Tree>("Tree").GetEdited()); // Этот элемент только что был отредактирован (например, проверен).
}
int get_edited_column() const 🔗
Возвращает столбец для текущего редактируемого элемента.
Rect2 get_item_area_rect(item: TreeItem, column: int = -1, button_index: int = -1) const 🔗
Возвращает область прямоугольника для указанного TreeItem. Если указан column, получить только положение и размер этого столбца, в противном случае получить прямоугольник, содержащий все столбцы. Если указан индекс кнопки, будет возвращен прямоугольник этой кнопки.
TreeItem get_item_at_position(position: Vector2) const 🔗
Возвращает элемент дерева в указанной позиции (относительно исходной позиции дерева).
TreeItem get_next_selected(from: TreeItem) 🔗
Возвращает следующий выбранный TreeItem после указанного или null, если достигнут конец.
Если from равен null, возвращается первый выбранный элемент.
int get_pressed_button() const 🔗
Возвращает индекс последней нажатой кнопки.
Возвращает корневой элемент дерева или null, если дерево пустое.
Возвращает текущую позицию прокрутки.
TreeItem get_selected() const 🔗
Возвращает текущий сфокусированный элемент или null, если ни один элемент не сфокусирован.
В режимах SELECT_ROW и SELECT_SINGLE сфокусированный элемент совпадает с выбранным элементом. В режиме SELECT_MULTI сфокусированный элемент — это элемент под курсором фокуса, не обязательно выбранный.
Чтобы получить текущий выбранный элемент(ы), используйте get_next_selected().
int get_selected_column() const 🔗
Возвращает текущий сфокусированный столбец или -1, если ни один столбец не сфокусирован.
В режиме SELECT_SINGLE сфокусированный столбец является выбранным столбцом. В режиме SELECT_ROW сфокусированный столбец всегда равен 0, если выбран какой-либо элемент. В режиме SELECT_MULTI сфокусированный столбец является столбцом под курсором фокуса, и не обязательно, чтобы был выбран какой-либо столбец.
Чтобы определить, выбран ли столбец элемента, используйте TreeItem.is_selected().
bool is_column_clipping_content(column: int) const 🔗
Возвращает true, если для столбца включено отсечение (см. set_column_clip_content()).
bool is_column_expanding(column: int) const 🔗
Возвращает true, если столбец поддерживает расширение (см. set_column_expand()).
void scroll_to_item(item: TreeItem, center_on_item: bool = false) 🔗
Заставляет Tree перейти к указанному TreeItem.
void set_column_clip_content(column: int, enable: bool) 🔗
Позволяет включить обрезку содержимого столбца, игнорируя размер содержимого.
void set_column_custom_minimum_width(column: int, min_width: int) 🔗
Переопределяет вычисленную минимальную ширину столбца. Его можно установить на 0, чтобы восстановить поведение по умолчанию. Столбцы с флагом "Expand" будут использовать свой "min_width" аналогично Control.size_flags_stretch_ratio.
void set_column_expand(column: int, expand: bool) 🔗
Если true, столбец будет иметь флаг «Expand» Control. Столбцы, имеющие флаг «Expand», будут использовать свой коэффициент расширения аналогично Control.size_flags_stretch_ratio (см. set_column_expand_ratio()).
void set_column_expand_ratio(column: int, ratio: int) 🔗
Устанавливает относительный коэффициент расширения для столбца. См. set_column_expand().
void set_column_title(column: int, title: String) 🔗
Задает заголовок столбца.
void set_column_title_alignment(column: int, title_alignment: HorizontalAlignment) 🔗
Устанавливает выравнивание заголовка столбца. Обратите внимание, что @GlobalScope.HORIZONTAL_ALIGNMENT_FILL не поддерживается для заголовков столбцов.
void set_column_title_direction(column: int, direction: TextDirection) 🔗
Устанавливает направление написания заголовка столбца.
void set_column_title_language(column: int, language: String) 🔗
Устанавливает код языка заголовка столбца, используемый для алгоритмов переноса строк и формирования текста, если оставить пустым, вместо него используется текущая локаль.
void set_selected(item: TreeItem, column: int) 🔗
Выбирает указанный TreeItem и столбец.
Описания свойств темы
Color children_hl_line_color = Color(0.27, 0.27, 0.27, 1) 🔗
Color линий связи между выбранным TreeItem и его дочерними элементами.
Color custom_button_font_highlight = Color(0.95, 0.95, 0.95, 1) 🔗
Color текста для ячейки режима TreeItem.CELL_MODE_CUSTOM при наведении на нее курсора.
Color drop_position_color = Color(1, 1, 1, 1) 🔗
Color используется для рисования возможных мест сброса/перетаскивания. См. константы DropModeFlags для дальнейшего описания мест сброса.
Color font_color = Color(0.7, 0.7, 0.7, 1) 🔗
Color текста элемента по умолчанию.
Color font_disabled_color = Color(0.875, 0.875, 0.875, 0.5) 🔗
Color текста для ячейки режима TreeItem.CELL_MODE_CHECK, когда она нередактируема (см. TreeItem.set_editable()).
Color font_hovered_color = Color(0.95, 0.95, 0.95, 1) 🔗
Color текста используемый, когда на элемент наведен курсор, но он еще не выбран.
Color font_hovered_dimmed_color = Color(0.875, 0.875, 0.875, 1) 🔗
Color текста, используемый при наведении курсора на элемент, при наведении курсора на кнопку того же элемента в то же время.
Color font_hovered_selected_color = Color(1, 1, 1, 1) 🔗
Color текста, используемый при наведении указателя мыши на элемент и его выборе.
Color font_outline_color = Color(0, 0, 0, 1) 🔗
Оттенок текстового контура элемента.
Color font_selected_color = Color(1, 1, 1, 1) 🔗
Color текста, используемый при выборе элемента.
Color guide_color = Color(0.7, 0.7, 0.7, 0.25) 🔗
Color направляющей.
Color parent_hl_line_color = Color(0.27, 0.27, 0.27, 1) 🔗
Color линий связи между выбранным TreeItem и его родителями.
Color relationship_line_color = Color(0.27, 0.27, 0.27, 1) 🔗
Color по умолчанию для линий взаимоотношений.
Color title_button_color = Color(0.875, 0.875, 0.875, 1) 🔗
Color текста по умолчанию кнопки заголовка.
Горизонтальное расстояние между каждой кнопкой в ячейке.
int children_hl_line_width = 1 🔗
Ширина линий связи между выбранным TreeItem и его дочерними элементами.
Рисует направляющие, если не ноль, это действует как логическое значение. Направляющая представляет собой горизонтальную линию, нарисованную внизу каждого элемента.
int draw_relationship_lines = 0 🔗
Рисует линии отношений, если не ноль, это действует как логическое значение. Линии отношений рисуются в начале дочерних элементов, чтобы показать иерархию.
Горизонтальное пространство между ячейками элементов. Также используется как поле в начале элемента, когда сворачивание отключено.
Максимально допустимая ширина значка в ячейках элемента. Это ограничение применяется поверх размера значка по умолчанию, но до значения, установленного с помощью TreeItem.set_icon_max_width(). Высота регулируется в соответствии с соотношением значка.
int inner_item_margin_bottom = 0 🔗
Внутренний нижний край ячейки.
int inner_item_margin_left = 0 🔗
Внутренний левый край ячейки.
int inner_item_margin_right = 0 🔗
Внутренний правый край ячейки.
int inner_item_margin_top = 0 🔗
Внутреннее верхнее поле ячейки.
Горизонтальное поле в начале элемента. Используется, когда для элемента включено сворачивание.
Размер контура текста.
Примечание: При использовании шрифта с включенным FontFile.multichannel_signed_distance_field его FontFile.msdf_pixel_range должен быть установлен как минимум в дважды значения outline_size, чтобы контур выглядел правильно. В противном случае контур может оказаться обрезанным раньше, чем предполагалось.
int parent_hl_line_margin = 0 🔗
Пространство между линиями родительских отношений для выбранного TreeItem и линиями отношений с его родственными элементами, которые не выбраны.
int parent_hl_line_width = 1 🔗
Ширина линий связи между выбранным TreeItem и его родителями.
int relationship_line_width = 1 🔗
Ширина линий отношений по умолчанию.
Максимальное расстояние между курсором мыши и границей элемента управления, при котором будет срабатывать прокрутка границы при перетаскивании.
Скорость прокрутки границы.
int scrollbar_h_separation = 4 🔗
Горизонтальное разделение содержимого дерева и полосы прокрутки.
int scrollbar_margin_bottom = -1 🔗
Нижнее поле полос прокрутки. При отрицательном значении используется нижнее поле panel.
int scrollbar_margin_left = -1 🔗
Левое поле горизонтальной полосы прокрутки. При отрицательном значении использует левое поле panel.
int scrollbar_margin_right = -1 🔗
Правое поле полос прокрутки. При отрицательном значении использует правое поле panel.
int scrollbar_margin_top = -1 🔗
Верхнее поле вертикальной полосы прокрутки. При отрицательном значении использует верхнее поле panel.
int scrollbar_v_separation = 4 🔗
Вертикальное разделение содержимого дерева и полосы прокрутки.
Вертикальный отступ внутри каждого элемента, т. е. расстояние между содержимым элемента и верхней/нижней границей.
Font текста элемента.
Font текста кнопки заголовка.
Размер шрифта текста элемента.
Размер шрифта текста кнопки заголовка.
Значок стрелки, используемый, когда складной элемент не свёрнут.
Значок стрелки, используемый, когда складной элемент свёрнут (для макетов слева направо).
Texture2D arrow_collapsed_mirrored 🔗
Значок стрелки, используемый, когда сворачиваемый элемент свёрнут (для макетов с направлением справа налево).
Значок галочки, отображаемый, когда ячейка режима TreeItem.CELL_MODE_CHECK отмечена и доступна для редактирования (см. TreeItem.set_editable()).
Значок галочки, отображаемый, когда ячейка режима TreeItem.CELL_MODE_CHECK отмечена и недоступна для редактирования (см. TreeItem.set_editable()).
Значок галочки, отображаемый, когда ячейка режима TreeItem.CELL_MODE_CHECK неопределена и доступна для редактирования (см. TreeItem.set_editable()).
Texture2D indeterminate_disabled 🔗
Значок галочки, отображаемый, когда ячейка режима TreeItem.CELL_MODE_CHECK неопределена и недоступна для редактирования (см. TreeItem.set_editable()).
Значок стрелки, отображаемый для ячейки режима TreeItem.CELL_MODE_RANGE.
Значок галочки, отображаемый, когда ячейка режима TreeItem.CELL_MODE_CHECK не отмечена и доступна для редактирования (см. TreeItem.set_editable()).
Texture2D unchecked_disabled 🔗
Значок галочки, отображаемый, когда ячейка режима TreeItem.CELL_MODE_CHECK не отмечена и недоступна для редактирования (см. TreeItem.set_editable()).
Значок стрелки вверх-вниз, отображаемый для ячейки режима TreeItem.CELL_MODE_RANGE.
StyleBox используется при наведении курсора на кнопку в дереве.
StyleBox используется при нажатии кнопки в дереве.
StyleBox используется для курсора, когда фокус находится на Tree.
StyleBox используется для курсора, когда Tree не находится в фокусе.
StyleBox по умолчанию для ячейки режима TreeItem.CELL_MODE_CUSTOM, когда кнопка включена с помощью TreeItem.set_custom_as_button().
StyleBox custom_button_hover 🔗
StyleBox для ячейки кнопки режима TreeItem.CELL_MODE_CUSTOM при наведении на нее курсора.
StyleBox custom_button_pressed 🔗
StyleBox для ячейки кнопки режима TreeItem.CELL_MODE_CUSTOM при нажатии.
Сфокусированный стиль для Tree, нарисованного поверх всего.
StyleBox для элемента, на который наведен курсор, но который не выбран.
StyleBox для элемента, на который наведен курсор, в то время как кнопка того же элемента наводится курсором в то же время.
StyleBox для наведенных и выбранных элементов, используется, когда Tree не находится в фокусе.
StyleBox hovered_selected_focus 🔗
StyleBox для наведенных и выбранных элементов, используется, когда фокус находится на Tree.
Стиль фона для Tree.
StyleBox для выбранных элементов, используется, когда Tree не находится в фокусе.
StyleBox для выбранных элементов, используется, когда фокус находится на Tree.
StyleBox используется при наведении курсора на кнопку заголовка.
StyleBox title_button_normal 🔗
StyleBox по умолчанию для кнопки заголовка.
StyleBox title_button_pressed 🔗
StyleBox используется при нажатии кнопки заголовка.