Tree

Inherits: Control < CanvasItem < Node < Object

Control para mostrar un árbol de objetos.

Descripción

Esto muestra un árbol de objetos que pueden ser seleccionados, expandidos y colapsados. El árbol puede tener múltiples columnas con controles personalizados como edición de texto, botones y ventanas emergentes. Puede ser útil para mostrar e interactuar de forma estructurada.

Los árboles se construyen a través de código, usando objetos TreeItem para crear la estructura. Tienen una sola raíz pero se pueden simular múltiples raíces si se añade una raíz oculta ficticia.

func _ready():
    var tree = Tree.new()
    var root = tree.create_item()
    tree.set_hide_root(true)
    var child1 = tree.create_item(raíz)
    var child2 = tree.create_item(raíz)
    var subhijo1 = tree.create_item(hijo1)
    subchild1.set_text(0, "Subchild1")

Para iterar sobre todos los objetos TreeItem de un objeto Tree, usa TreeItem.get_next y TreeItem.get_children después de obtener la raíz a través de get_root. Puedes usar Object.free en un TreeItem para eliminarlo del Tree.

Propiedades

bool

allow_reselect

false

bool

allow_rmb_select

false

bool

column_titles_visible

false

int

columns

1

int

drop_mode_flags

0

FocusMode

focus_mode

2 (overrides Control)

bool

hide_folding

false

bool

hide_root

false

bool

rect_clip_content

true (overrides Control)

SelectMode

select_mode

0

Métodos

void

clear ( )

TreeItem

create_item ( Object parent=null, int idx=-1 )

bool

edit_selected ( )

void

ensure_cursor_is_visible ( )

int

get_column_at_position ( Vector2 position ) const

String

get_column_title ( int column ) const

int

get_column_width ( int column ) const

Rect2

get_custom_popup_rect ( ) const

int

get_drop_section_at_position ( Vector2 position ) const

TreeItem

get_edited ( ) const

int

get_edited_column ( ) const

Rect2

get_item_area_rect ( Object item, int column=-1 ) const

TreeItem

get_item_at_position ( Vector2 position ) const

TreeItem

get_next_selected ( Object from )

int

get_pressed_button ( ) const

TreeItem

get_root ( )

Vector2

get_scroll ( ) const

TreeItem

get_selected ( ) const

int

get_selected_column ( ) const

void

scroll_to_item ( Object item )

void

set_column_expand ( int column, bool expand )

void

set_column_min_width ( int column, int min_width )

void

set_column_title ( int column, String title )

Propiedades del Theme

Color

custom_button_font_highlight

Color( 0.94, 0.94, 0.94, 1 )

Color

drop_position_color

Color( 1, 0.3, 0.2, 1 )

Color

font_color

Color( 0.69, 0.69, 0.69, 1 )

Color

font_color_selected

Color( 1, 1, 1, 1 )

Color

guide_color

Color( 0, 0, 0, 0.1 )

Color

relationship_line_color

Color( 0.27, 0.27, 0.27, 1 )

Color

title_button_color

Color( 0.88, 0.88, 0.88, 1 )

int

button_margin

4

int

draw_guides

1

int

draw_relationship_lines

0

int

hseparation

4

int

item_margin

12

int

scroll_border

4

int

scroll_speed

12

int

vseparation

4

Font

font

Font

title_button_font

Texture

arrow

Texture

arrow_collapsed

Texture

checked

Texture

select_arrow

Texture

unchecked

Texture

updown

StyleBox

bg

StyleBox

bg_focus

StyleBox

button_pressed

StyleBox

cursor

StyleBox

cursor_unfocused

StyleBox

custom_button

StyleBox

custom_button_hover

StyleBox

custom_button_pressed

StyleBox

selected

StyleBox

selected_focus

StyleBox

title_button_hover

StyleBox

title_button_normal

StyleBox

title_button_pressed

Señales

Emitido cuando se presionó un botón del árbol (ver TreeItem.add_button).


  • cell_selected ( )

Emitido cuando se selecciona una celda.


  • column_title_pressed ( int column )

Se emite cuando se presiona el título de una columna.


  • custom_popup_edited ( bool arrow_clicked )

Se emite cuando se hace clic en una celda con la TreeItem.CELL_MODE_CUSTOM para ser editada.


Se emite cuando se presiona el botón derecho del ratón en el espacio vacío del árbol.


  • empty_tree_rmb_selected ( Vector2 position )

Se emite cuando se pulsa el botón derecho del ratón si la selección del botón derecho del ratón está activa y el árbol está vacío.


  • item_activated ( )

Se emite cuando se hace doble clic en la etiqueta de un artículo.


Se emite cuando un objeto se colapsa por un clic en la flecha de plegado.


  • item_custom_button_pressed ( )

Se emite cuando se pulsa un botón personalizado (es decir, en una celda de modo TreeItem.CELL_MODE_CUSTOM).


  • item_double_clicked ( )

Se emite cuando se hace doble clic en el icono de un elemento.


  • item_edited ( )

Emitido cuando se edita un artículo.


  • item_rmb_edited ( )

Se emite cuando se edita un elemento con el botón derecho del ratón.


  • item_rmb_selected ( Vector2 position )

Se emite cuando se selecciona un elemento con el botón derecho del ratón.


  • item_selected ( )

Emitido cuando se selecciona un elemento.


Emitido en lugar de item_selected si select_mode es SELECT_MULTI.


  • nothing_selected ( )

Emitido cuando un clic con el botón izquierdo del ratón no selecciona ningún elemento.

Enumeraciones

enum SelectMode:

  • SELECT_SINGLE = 0 --- Permite la selección de una sola celda a la vez. Desde la perspectiva de los items, sólo se permite seleccionar un único item. Y sólo hay una columna seleccionada en el item seleccionado.

El cursor de enfoque siempre está oculto en este modo, pero se posiciona en la selección actual, haciendo que el ítem actualmente seleccionado sea el ítem enfocado actualmente.

  • SELECT_ROW = 1 --- Permite la selección de una sola fila a la vez. Desde el punto de vista de los artículos, sólo se permite seleccionar un único artículo. Y todas las columnas se seleccionan en el artículo seleccionado.

El cursor de enfoque siempre está oculto en este modo, pero se posiciona en la primera columna de la selección actual, haciendo que el elemento seleccionado sea el elemento enfocado actualmente.

  • SELECT_MULTI = 2 --- Permite la selección de múltiples celdas al mismo tiempo. Desde la perspectiva de los artículos, se permite seleccionar múltiples artículos. Y puede haber múltiples columnas seleccionadas en cada elemento seleccionado.

El cursor de enfoque es visible en este modo, el ítem o columna bajo el cursor no está necesariamente seleccionado.


enum DropModeFlags:

  • DROP_MODE_DISABLED = 0 --- Desactiva todas las secciones de caída, pero aún así permite detectar la sección de caída "en el artículo" por get_drop_section_at_position.

Nota: Esta es la flag por defecto, no tiene ningún efecto cuando se combina con otras flags.

  • DROP_MODE_ON_ITEM = 1 --- Habilita la sección de entrega "en el artículo". Esta sección de entrega cubre todo el artículo.

Cuando se combina con DROP_MODE_INBETWEEN, esta sección de caída reduce a la mitad la altura y se mantiene centrada verticalmente.

  • DROP_MODE_INBETWEEN = 2 --- Activa las secciones de caída "por encima del artículo" y "por debajo del artículo". La sección de caída "sobre el artículo" cubre la mitad superior del artículo, y la sección de caída "debajo del artículo" cubre la mitad inferior.

Cuando se combinan con DROP_MODE_ON_ITEM, estas secciones de caída reducen a la mitad la altura y se mantienen en la parte superior / inferior en consecuencia.

Descripciones de Propiedades

  • bool allow_reselect

Default

false

Setter

set_allow_reselect(value)

Getter

get_allow_reselect()

Si true, la celda actualmente seleccionada puede ser seleccionada de nuevo.


  • bool allow_rmb_select

Default

false

Setter

set_allow_rmb_select(value)

Getter

get_allow_rmb_select()

Si true, un clic con el botón derecho del ratón puede seleccionar los elementos.


  • bool column_titles_visible

Default

false

Setter

set_column_titles_visible(value)

Getter

are_column_titles_visible()

Si true, los títulos de las columnas son visibles.


Default

1

Setter

set_columns(value)

Getter

get_columns()

El número de columnas.


  • int drop_mode_flags

Default

0

Setter

set_drop_mode_flags(value)

Getter

get_drop_mode_flags()

El modo de caída como una combinación de flags OR. Ver las constantes de DropModeFlags. Una vez que se hace el drop, se vuelve a la constante DROP_MODE_DISABLED. Se recomienda configurar esto durante Control.can_drop_data.

Esto controla las secciones de caída, es decir, la decisión y el dibujo de las posibles ubicaciones de caída en función de la posición del ratón.


Default

false

Setter

set_hide_folding(value)

Getter

is_folding_hidden()

Si true, la flecha de plegado está oculta.


Default

false

Setter

set_hide_root(value)

Getter

is_root_hidden()

Si true, la raíz del árbol está oculta.


Default

0

Setter

set_select_mode(value)

Getter

get_select_mode()

Permite la selección simple o múltiple. Vea las constantes SelectMode.

Descripciones de Métodos

  • void clear ( )

Despeja el árbol. Esto elimina todos los elementos.


Crea un elemento en el árbol y lo añade como hijo de parent.

Si parent es null, el elemento raíz será el padre, o el nuevo elemento será la propia raíz si el árbol está vacío.

El nuevo ítem será el idxth hijo del padre, o será el último hijo si no hay suficientes hermanos.


  • bool edit_selected ( )

Edits the selected tree item as if it was clicked. The item must be set editable with TreeItem.set_editable. Returns true if the item could be edited. Fails if no item is selected.


  • void ensure_cursor_is_visible ( )

Hace visible la célula actualmente enfocada.

Esto desplazará el árbol si es necesario. En el modo SELECT_ROW, esto no hará un scrolling horizontal, ya que todas las celdas de la fila seleccionada están enfocadas lógicamente.

Nota: A pesar del nombre de este método, el propio cursor de enfoque sólo es visible en el modo SELECT_MULTI.


  • int get_column_at_position ( Vector2 position ) const

Devuelve el índice de la columna en la position, o -1 si no hay ningún elemento.


  • String get_column_title ( int column ) const

Devuelve el título de la columna.


  • int get_column_width ( int column ) const

Devuelve el ancho de la columna en píxeles.


  • Rect2 get_custom_popup_rect ( ) const

Devuelve el rectángulo para los popups personalizados. Ayuda a crear controles de celda personalizados que muestran un popup. Ver TreeItem.set_cell_mode.


  • int get_drop_section_at_position ( Vector2 position ) const

Devuelve la sección de caída en la position, o -100 si no hay ningún elemento.

Se devolverán los valores -1, 0, o 1 para las secciones de caída "por encima del artículo", "sobre el artículo", y "por debajo del artículo", respectivamente. Véase DropModeFlags para una descripción de cada sección de caída.

Para obtener el elemento con el que la sección de drop devuelta es relativa, usa get_item_at_position.


Returns the currently edited item. Can be used with item_edited to get the item that was modified.

func _ready():
    $Tree.item_edited.connect(on_Tree_item_edited)

func on_Tree_item_edited():
    print($Tree.get_edited()) # This item just got edited (e.g. checked).

  • int get_edited_column ( ) const

Returns the column for the currently edited item.


Devuelve el área del rectángulo para el artículo especificado. Si se especifica column, sólo se obtiene la posición y el tamaño de esa columna, de lo contrario se obtiene el rectángulo que contiene todas las columnas.


Devuelve el elemento del árbol en la posición especificada (en relación con la posición de origen del árbol).


Devuelve el siguiente elemento seleccionado después del dado, o null si se alcanza el final.

Si from es null, esto devuelve el primer elemento seleccionado.


  • int get_pressed_button ( ) const

Devuelve el índice del último botón pulsado.


Devuelve el elemento raíz del árbol, o null si el árbol está vacío.


Devuelve la posición de scrolling actual.


Devuelve el elemento enfocado actualmente, o null si no hay ningún elemento enfocado.

En los modos SELECT_ROW y SELECT_SINGLE, el elemento enfocado es el mismo que el elemento seleccionado. En el modo SELECT_MULTI, el elemento enfocado es el elemento que se encuentra bajo el cursor de enfoque, no necesariamente seleccionado.

Para obtener el/los elemento(s) actualmente seleccionado(s), use get_next_selected.


  • int get_selected_column ( ) const

Devuelve la columna actualmente enfocada, o -1 si no hay ninguna columna enfocada.

En el modo SELECT_SINGLE, la columna enfocada es la columna seleccionada. En el modo SELECT_ROW, la columna enfocada es siempre 0 si se selecciona algún elemento. En el modo SELECT_MULTI, la columna enfocada es la columna que se encuentra bajo el cursor de enfoque, y no hay necesariamente ninguna columna seleccionada.

Para saber si una columna de un elemento está seleccionada, utilice el TreeItem.is_selected.


  • void scroll_to_item ( Object item )

Causes the Tree to jump to the specified item.


  • void set_column_expand ( int column, bool expand )

Si true, la columna tendrá la flag "Expandir" de Control. Las columnas que tienen la flag "Expandir" usarán su "min_width" de forma similar a Control.size_flags_stretch_ratio.


  • void set_column_min_width ( int column, int min_width )

Establece el ancho mínimo de una columna. Las columnas que tienen la flag "Expandir" usarán su "ancho mínimo" de manera similar a Control.size_flags_stretch_ratio.


  • void set_column_title ( int column, String title )

Establece el título de una columna.

Theme Property Descriptions

  • Color custom_button_font_highlight

Default

Color( 0.94, 0.94, 0.94, 1 )

Texto Color para una celda de modo TreeItem.CELL_MODE_CUSTOM cuando el cursor esta encima.


  • Color drop_position_color

Default

Color( 1, 0.3, 0.2, 1 )

Color usado para dibujar posibles lugares de caída. Ver las constantes DropModeFlags para una descripción más detallada de los lugares de caída.


Default

Color( 0.69, 0.69, 0.69, 1 )

Color del texto predeterminado del elemento.


  • Color font_color_selected

Default

Color( 1, 1, 1, 1 )

Color del texto utilizado cuando se selecciona el elemento.


Default

Color( 0, 0, 0, 0.1 )

Color de la guía.


  • Color relationship_line_color

Default

Color( 0.27, 0.27, 0.27, 1 )

Color de las líneas de relación.


  • Color title_button_color

Default

Color( 0.88, 0.88, 0.88, 1 )

Texto predeterminado Color del botón de título.


  • int button_margin

Default

4

El espacio horizontal entre cada botón de una celda.


  • int draw_guides

Default

1

Dibuja las guías si no es cero, esto actúa como un booleano. La guia es una línea horizontal dibujada en la parte inferior de cada artículo.


  • int draw_relationship_lines

Default

0

Dibuja las líneas de relación si no es cero, esto actúa como un booleano. Las líneas de relación se dibujan al principio de los elementos hijos para mostrar la jerarquía.


  • int hseparation

Default

4

El espacio horizontal entre las celdas de los artículos. También se utiliza como el margen al principio de un artículo cuando el plegado está desactivado.


  • int item_margin

Default

12

El margen horizontal al comienzo de un artículo. Se utiliza cuando el plegado está habilitado para el artículo.


  • int scroll_border

Default

4

La distancia máxima entre el cursor del ratón y el borde del control para activar el desplazamiento del borde al arrastrar.


  • int scroll_speed

Default

12

La velocidad del scrolling de la frontera.


  • int vseparation

Default

4

El relleno vertical dentro de cada artículo, es decir, la distancia entre el contenido del artículo y el borde superior/inferior.


Font del texto del elemento.


  • Font title_button_font

Font del texto del título del botón.


El icono de la flecha que se usa cuando un elemento plegable no está colapsado.


El icono de la flecha que se utiliza cuando un elemento plegable se derrumba.


El icono de comprobación que se muestra cuando se comprueba la celda de modo TreeItem.CELL_MODE_CHECK.


El icono de la flecha que se muestra para la celda de modo TreeItem.CELL_MODE_RANGE.


El icono de verificación que se muestra cuando la celda de modo TreeItem.CELL_MODE_CHECK está desmarcada.


El icono de flecha arriba/abajo para mostrar el modo celda TreeItem.CELL_MODE_RANGE.


Por defecto StyleBox para el Tree, es decir, se utiliza cuando el control no está siendo enfocado.


StyleBox usado cuando el Tree está siendo enfocado.


StyleBox usado cuando se pulsa un botón del árbol.


StyleBox usado para el cursor, cuando el Tree está siendo enfocado.


StyleBox usado para el cursor, cuando el Tree no está siendo enfocado.


Por defecto StyleBox para una celda de modo TreeItem.CELL_MODE_CUSTOM.


StyleBox para un TreeItem.CELL_MODE_CUSTOM cuando el cursor esta encima.


StyleBox para una celda de modo TreeItem.CELL_MODE_CUSTOM cuando se presiona.


StyleBox para los elementos seleccionados, utilizado cuando el Tree no está siendo enfocado.


StyleBox para los elementos seleccionados, usado cuando el Tree está siendo enfocado.


StyleBox usado cuando el cursor esta encima del botón del título.


Predeterminado StyleBox para el título del botón.


StyleBox utilizado cuando se presiona el botón de título.