Tree
继承
简要描述
控件以显示对象树。
描述
这显示了可以选择,展开和折叠的对象树。该树可以具有多列,并带有自定义控件,例如文本编辑,按钮和弹出窗口。它对于结构化的显示和交互很有用。
通过使用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_next和TreeItem.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) |
信号
在按下树上的按钮时发出(请参见[方法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_double_clicked**
双击对象的图标时发射。
- **item_edited**
编辑对象时发出。
- **item_rmb_edited**
使用鼠标右键编辑对象时发出。
- **item_rmb_selected**
用鼠标右键选择一个对象时发射。
- **item_selected**
当选择的对象发光。
- **multi_selected**
如果select_mode
为SELECT_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
的子节点。
如果parent
为null
,则根将是父节点,或者如果树为空,那么新对象将是根本身。
新对象将是父项的第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
。
如果from
为null
,则返回第一个选择的对象。
- get_pressed_button () const
返回最后按下的按钮的索引。
- get_root get_root()
返回树的根。如果树为空,则返回null
。
- get_scroll get_scroll() const
返回当前的滚动位置。
- get_selected get_selected() const
返回当前聚焦的对象,如果没有聚焦的对象,则返回null
。
在SELECT_ROW和SELECT_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
,则列标题可见。