跳到主要内容

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

成员

类型属性名默认值
boolallow_reselectfalse
boolallow_rmb_selectfalse
intcolumns1
intdrop_mode_flags0
intfocus_mode2
boolhide_foldingfalse
boolhide_rootfalse
boolrect_clip_contenttrue
intselect_mode0

方法

返回值类型方法名称
boolare_column_titles_visible() const
voidclear()
TreeItemcreate_item(parent: Object = null, idx: int = -1)
voidensure_cursor_is_visible()
intget_column_at_position(position: Vector2) const
Stringget_column_title(column: int) const
intget_column_width(column: int) const
Rect2get_custom_popup_rect() const
intget_drop_section_at_position(position: Vector2) const
TreeItemget_edited() const
intget_edited_column() const
Rect2get_item_area_rect(item: Object, column: int = -1) const
TreeItemget_item_at_position(position: Vector2) const
TreeItemget_next_selected(from: Object)
intget_pressed_button() const
TreeItemget_root()
Vector2get_scroll() const
TreeItemget_selected() const
intget_selected_column() const
voidset_column_expand(column: int, expand: bool)
voidset_column_min_width(column: int, min_width: int)
voidset_column_title(column: int, title: String)
voidset_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
Defaultfalse
setterset_allow_reselect(value)
getterget_allow_reselect
  • bool allow_rmb_select
Defaultfalse
setterset_allow_rmb_select(value)
getterget_allow_rmb_select
  • int columns
Default1
setterset_columns(value)
getterget_columns
  • int drop_mode_flags
Default0
setterset_drop_mode_flags(value)
getterget_drop_mode_flags
  • int focus_mode
Default2
setterset_focus_mode(value)
getterget_focus_mode
  • bool hide_folding
Defaultfalse
setterset_hide_folding(value)
getteris_folding_hidden
  • bool hide_root
Defaultfalse
setterset_hide_root(value)
getteris_root_hidden
  • bool rect_clip_content
Defaulttrue
setterset_clip_contents(value)
getteris_clipping_contents
  • int select_mode
Default0
setterset_select_mode(value)
getterget_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,则列标题可见。