跳转至

Tree

继承

Control

简要描述

控件以显示对象树。

描述

这显示了可以选择,展开和折叠的对象树。该树可以具有多列,并带有自定义控件,例如文本编辑,按钮和弹出窗口。它对于结构化的显示和交互很有用。

通过使用TreeItem对象创建结构的代码来构建树。它们只有一个根节点,但是如果添加了一个伪隐藏根节点,则可以模拟多个根节点。

func _ready():
    var tree = Tree.new()
    var root = tree.create_item()
    tree.set_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")

要遍历Tree对象中的所有TreeItem对象,请在通过get_root获取根之后使用TreeItem.get_nextTreeItem.get_children

成员

类型 属性名 默认值
bool allow_reselect false
bool allow_rmb_select false
int columns 1
int drop_mode_flags 0
int focus_mode 2
bool hide_folding false
bool hide_root false
bool rect_clip_content true
int select_mode 0

方法

返回值类型 方法名称
bool are_column_titles_visible() const
void clear()
TreeItem create_item(parent: Object = null, idx: int = -1)
void ensure_cursor_is_visible()
int get_column_at_position(position: Vector2) const
String get_column_title(column: int) const
int get_column_width(column: int) const
Rect2 get_custom_popup_rect() const
int get_drop_section_at_position(position: Vector2) const
TreeItem get_edited() const
int get_edited_column() const
Rect2 get_item_area_rect(item: Object, column: int = -1) const
TreeItem get_item_at_position(position: Vector2) const
TreeItem get_next_selected(from: Object)
int get_pressed_button() const
TreeItem get_root()
Vector2 get_scroll() const
TreeItem get_selected() const
int get_selected_column() const
void set_column_expand(column: int, expand: bool)
void set_column_min_width(column: int, min_width: int)
void set_column_title(column: int, title: String)
void set_column_titles_visible(visible: bool)

信号

  • button_pressed

在按下树上的按钮时发出(请参见[方法TreeItem.add_button])。


  • cell_selected

在选定单元格时发射。


  • column_title_pressed

按下列标题时发出。


  • custom_popup_edited

当单击具有TreeItem.CELL_MODE_CUSTOM的单元格进行编辑时,发出此事件。


  • empty_rmb

在树的空白区域中按下鼠标右键时发出。


  • empty_tree_rmb_selected

如果右键单击选择处于活动状态并且树为空,则在按下鼠标右键时发出。


  • item_activated

双击对象的标签时发出。


  • item_collapsed

通过单击折叠箭头折叠对象时发出。


  • item_custom_button_pressed

  • item_double_clicked

双击对象的图标时发射。


  • item_edited

编辑对象时发出。


  • item_rmb_edited

使用鼠标右键编辑对象时发出。


  • item_rmb_selected

用鼠标右键选择一个对象时发射。


  • item_selected

当选择的对象发光。


  • multi_selected

如果select_modeSELECT_MULTI,则代替item_selected发出。


  • nothing_selected

当单击鼠标左键不选择任何对象时发出。


枚举

enum SelectMode: - SELECT_SINGLE = 0

允许一次选择一个单元格。

在此模式下,焦点光标始终处于隐藏状态,但它位于当前选择位置,从而使当前选择的对象成为当前聚焦的对象。

  • SELECT_ROW = 1

允许一次选择单个行。

在此模式下,焦点光标始终处于隐藏状态,但它位于当前选择的第一列,从而使当前选择的对象成为当前聚焦的对象。

  • SELECT_MULTI = 2

允许同时选择多个单元格。

在此模式下焦点光标是可见的,光标下方的对象或列不一定是选中的。


enum DropModeFlags: - DROP_MODE_DISABLED = 0

禁用所有放置部分,但仍允许通过get_drop_section_at_position检测“在对象中”放置部分。

**注意:**这是默认标志,与其他标志结合使用时无效。

  • DROP_MODE_ON_ITEM = 1

启用“对象上”放置部分。

DROP_MODE_INBETWEEN结合使用时,此放置部分将高度减半,并保持垂直居中。

  • DROP_MODE_INBETWEEN = 2

启用“在对象上方”和“在对象下方”放置部分。

当与DROP_MODE_ON_ITEM结合使用时,这些下降部分会将高度减半,并相应地停留在顶部/底部。


常量

成员说明

  • bool allow_reselect
Default false
setter set_allow_reselect(value)
getter get_allow_reselect
  • bool allow_rmb_select
Default false
setter set_allow_rmb_select(value)
getter get_allow_rmb_select
  • int columns
Default 1
setter set_columns(value)
getter get_columns
  • int drop_mode_flags
Default 0
setter set_drop_mode_flags(value)
getter get_drop_mode_flags
  • int focus_mode
Default 2
setter set_focus_mode(value)
getter get_focus_mode
  • bool hide_folding
Default false
setter set_hide_folding(value)
getter is_folding_hidden
  • bool hide_root
Default false
setter set_hide_root(value)
getter is_root_hidden
  • bool rect_clip_content
Default true
setter set_clip_contents(value)
getter is_clipping_contents
  • int select_mode
Default 0
setter set_select_mode(value)
getter get_select_mode

方法说明

  • are_column_titles_visible are_column_titles_visible() const

如果显示列标题,则返回true


  • clear clear()

清除树。这将删除所有对象。


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

在树中创建一个对象,并将其添加为parent的子节点。

如果parentnull,则根将是父节点,或者如果树为空,那么新对象将是根本身。

新对象将是父项的第idx个子项,或者如果兄弟姐妹项不足,它将是最后一个子节点。


  • ensure_cursor_is_visible ensure_cursor_is_visible()

使当前聚焦的单元格可见。

如有必要,这将滚动树。

**注意:**尽管使用了此方法,但焦点光标本身仅在SELECT_MULTI模式下可见。


  • get_column_at_position get_column_at_position(position: Vector2) const

返回position处的列索引;如果没有项,则返回-1。


  • get_column_title get_column_title(column: int) const

返回列的标题。


  • get_column_width get_column_width(column: int) const

返回列的宽度(以像素为单位)。


  • get_custom_popup_rect get_custom_popup_rect() const

返回自定义弹出窗口的矩形。


  • get_drop_section_at_position get_drop_section_at_position(position: Vector2) const

返回位于position的放置部分;如果没有项,则返回-100。

对于“上方对象”,“在上方对象”和“下方对象”放置部分,将分别返回值-1、0或1。有关每个放置部分的说明,请参照DropModeFlags

要获取返回的放置部分相对的对象,请使用get_item_at_position


  • get_edited get_edited() const

返回当前编辑的对象。这仅适用于自定义单元格模式。


  • get_edited_column get_edited_column() const

返回当前编辑项的列。这仅适用于自定义单元格模式。


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

返回指定对象的矩形区域。如果指定了column,则仅获取该列的位置和大小,否则获取包含所有列的矩形。


  • get_item_at_position get_item_at_position(position: Vector2) const

返回指定位置(相对于树的原始位置)的树中对象。


  • get_next_selected get_next_selected(from: Object)

返回给定项之后的下一个选定项;如果到达末尾,则返回null

如果fromnull,则返回第一个选择的对象。


  • get_pressed_button get_pressed_button() const

返回最后按下的按钮的索引。


  • get_root get_root()

返回树的根。如果树为空,则返回null


  • get_scroll get_scroll() const

返回当前的滚动位置。


  • get_selected get_selected() const

返回当前聚焦的对象,如果没有聚焦的对象,则返回null

SELECT_ROWSELECT_SINGLE模式下,聚焦的对象与所选对象是相同的。在SELECT_MULTI模式下,聚焦的对象是聚焦光标下的对象,不一定要选择。

要获取当前选择的对象,请使用get_next_selected


  • get_selected_column get_selected_column() const

返回当前聚焦的列;如果没有聚焦的列,则返回-1。

SELECT_SINGLE模式下,焦点所在的列是选定的列。

要确定是否选择了对象的列,请使用TreeItem.is_selected


  • set_column_expand set_column_expand(column: int, expand: bool)

如果true,则该列将具有Control的“ Expand”标志。


  • set_column_min_width set_column_min_width(column: int, min_width: int)

设置列的最小宽度。


  • set_column_title set_column_title(column: int, title: String)

设置列标题。


  • set_column_titles_visible set_column_titles_visible(visible: bool)

如果true,则列标题可见。