Window

继承: Viewport < Item < Object

派生: AcceptDialog, Popup

所有窗口、对话框和弹出窗口的基类。

描述

创建窗口的节点。该窗口可以是本机系统窗口,也可以嵌入到另一个Window中(参见Viewport.gui_embed_subwindows)。

在运行时,Window不会在请求时自动关闭。您需要使用close_requested信号手动处理它(这适用于按下关闭按钮和单击弹出窗口之外)。

属性

方法

Vector2

_get_contents_minimum_size() virtual const

void

add_theme_color_override(name: StringName, color: Color)

void

add_theme_constant_override(name: StringName, constant: int)

void

add_theme_font_override(name: StringName, font: Font)

void

add_theme_font_size_override(name: StringName, font_size: int)

void

add_theme_icon_override(name: StringName, texture: Texture2D)

void

add_theme_stylebox_override(name: StringName, stylebox: StyleBox)

void

begin_bulk_theme_override()

bool

can_draw() const

void

child_controls_changed()

void

end_bulk_theme_override()

Vector2

get_contents_minimum_size() const

bool

get_flag(flag: Flags) const

LayoutDirection

get_layout_direction() const

Vector2i

get_position_with_decorations() const

Vector2i

get_size_with_decorations() const

Color

get_theme_color(name: StringName, theme_type: StringName = &"") const

int

get_theme_constant(name: StringName, theme_type: StringName = &"") const

float

get_theme_default_base_scale() const

Font

get_theme_default_font() const

int

get_theme_default_font_size() const

Font

get_theme_font(name: StringName, theme_type: StringName = &"") const

int

get_theme_font_size(name: StringName, theme_type: StringName = &"") const

Texture2D

get_theme_icon(name: StringName, theme_type: StringName = &"") const

StyleBox

get_theme_stylebox(name: StringName, theme_type: StringName = &"") const

int

get_window_id() const

void

grab_focus()

bool

has_focus() const

bool

has_theme_color(name: StringName, theme_type: StringName = &"") const

bool

has_theme_color_override(name: StringName) const

bool

has_theme_constant(name: StringName, theme_type: StringName = &"") const

bool

has_theme_constant_override(name: StringName) const

bool

has_theme_font(name: StringName, theme_type: StringName = &"") const

bool

has_theme_font_override(name: StringName) const

bool

has_theme_font_size(name: StringName, theme_type: StringName = &"") const

bool

has_theme_font_size_override(name: StringName) const

bool

has_theme_icon(name: StringName, theme_type: StringName = &"") const

bool

has_theme_icon_override(name: StringName) const

bool

has_theme_stylebox(name: StringName, theme_type: StringName = &"") const

bool

has_theme_stylebox_override(name: StringName) const

void

hide()

bool

is_embedded() const

bool

is_layout_rtl() const

bool

is_maximize_allowed() const

bool

is_using_font_oversampling() const

void

move_to_center()

void

move_to_foreground()

void

popup(rect: Rect2i = Rect2i(0, 0, 0, 0))

void

popup_centered(minsize: Vector2i = Vector2i(0, 0))

void

popup_centered_clamped(minsize: Vector2i = Vector2i(0, 0), fallback_ratio: float = 0.75)

void

popup_centered_ratio(ratio: float = 0.8)

void

popup_exclusive(from_node: Item, rect: Rect2i = Rect2i(0, 0, 0, 0))

void

popup_exclusive_centered(from_node: Item, minsize: Vector2i = Vector2i(0, 0))

void

popup_exclusive_centered_clamped(from_node: Item, minsize: Vector2i = Vector2i(0, 0), fallback_ratio: float = 0.75)

void

popup_exclusive_centered_ratio(from_node: Item, ratio: float = 0.8)

void

popup_exclusive_on_parent(from_node: Item, parent_rect: Rect2i)

void

popup_on_parent(parent_rect: Rect2i)

void

remove_theme_color_override(name: StringName)

void

remove_theme_constant_override(name: StringName)

void

remove_theme_font_override(name: StringName)

void

remove_theme_font_size_override(name: StringName)

void

remove_theme_icon_override(name: StringName)

void

remove_theme_stylebox_override(name: StringName)

void

request_attention()

void

reset_size()

void

set_flag(flag: Flags, enabled: bool)

void

set_ime_active(active: bool)

void

set_ime_position(position: Vector2i)

void

set_layout_direction(direction: LayoutDirection)

void

set_unparent_when_invisible(unparent: bool)

void

set_use_font_oversampling(enable: bool)

void

show()

void

start_drag()

void

start_resize(edge: WindowResizeEdge)

主题属性


信号

about_to_popup() 🔗

popup()调用之后、Window出现或执行任何操作之前立即发出。


close_requested() 🔗

当按下Window的关闭按钮或启用popup_window并且用户单击窗口外时发出。

此信号可用于处理窗口关闭,例如通过将其连接到hide()


dpi_changed() 🔗

Window的DPI因操作系统级别的更改而更改时发出(例如将窗口从Retina显示器移动到较低分辨率的显示器)。

注意:仅在macOS上实现。


files_dropped(files: PackedStringArray) 🔗

当从操作系统文件管理器中拖动文件并将其拖放到应用窗口时触发此信号。参数是一个文件路径列表。”t

func _ready():

        get_window().files_dropped.connect(on_files_dropped)



func on_files_dropped(files):

        print(files)

Note: 此信号仅适用于原生窗口,也就是说,当主视口(Viewport)中的 Viewport.gui_embed_subwindows 被禁用时,该信号仅在主窗口以及派生自 Window 的节点上起作用


focus_entered() 🔗

Window获得焦点时发出。


focus_exited() 🔗

Window失去焦点时发出。


go_back_requested() 🔗

发送返回请求时发出(例如,在Android上按下“返回”按钮),就在Item.NOTIFICATION_WM_GO_BACK_REQUEST


mouse_entered() 🔗

当鼠标光标进入Window的可见区域时发出,该区域未被其他Control或窗口遮挡,前提是其Viewport.gui_disable_input,无论它当前是否聚焦。


mouse_exited() 🔗

当鼠标光标离开Window的可见区域时发出,该区域未被其他Control或窗口遮挡,前提是其Viewport.gui_disable_input,无论它当前是否聚焦。


theme_changed() 🔗

发送NOTIFICATION_THEME_CHANGED通知时发出。


title_changed() 🔗

更改窗口标题栏文本时发出。


titlebar_changed() 🔗

当窗口标题栏装饰更改时发出,例如macOS窗口进入/退出全屏模式,或扩展到标题标志更改。


visibility_changed() 🔗

Window变得可见或消失时发出。


window_input(event: InputEvent) 🔗

Window当前聚焦并接收任何输入时发出,将接收到的事件作为参数传递。事件的位置(如果存在)在嵌入器的坐标系中。


枚举

enum Mode: 🔗

Mode MODE_WINDOWED = 0

窗口模式,即Window不会占用整个屏幕(除非设置为屏幕大小)。

Mode MODE_MINIMIZED = 1

最小化窗口模式,即Window在窗口管理器的窗口列表中不可见且可用。通常发生在按下最小化按钮时。

Mode MODE_MAXIMIZED = 2

最大化窗口模式,即Window将占据除任务栏之外的整个屏幕区域,并且仍然显示其边框。通常发生在按下最大化按钮时。

Mode MODE_FULLSCREEN = 3

具有完全多窗口支持的全屏模式。

全屏窗口覆盖屏幕的整个显示区域,没有装饰。显示器的视频模式没有改变。

在Android上:这启用了沉浸式模式。

在Windows上:多窗口全屏模式具有1px的ProjectSettings.rendering/environment/defaults/default_clear_color颜色边框。

在macOS上:一个新的桌面用于显示正在运行的项目。

注意:无论平台如何,启用全屏都会改变窗口大小以匹配显示器的大小,因此,请确保您的项目在启用全屏模式时支持多种分辨率。

Mode MODE_EXCLUSIVE_FULLSCREEN = 4

单窗口全屏模式。这种模式开销较小,但一次只能在给定屏幕上打开一个窗口(打开子窗口或应用程序切换将触发全屏转换)。

全屏窗口覆盖屏幕的整个显示区域,没有边框或装饰。显示器的视频模式不会改变。

在Android上:这启用了沉浸式模式。

在Windows上:根据视频驱动程序,全屏转换可能会导致屏幕变黑片刻。

在macOS上:一个新的桌面用于显示正在运行的项目。独家全屏模式可防止当鼠标指针悬停在屏幕边缘时显示Dock和Menu。

在Linux(X11):独家全屏模式绕过合成器。

注意:无论平台如何,启用全屏都会改变窗口大小以匹配显示器的大小,因此,请确保您的项目在启用全屏模式时支持多种分辨率。


enum Flags: 🔗

Flags FLAG_RESIZE_DISABLED = 0

无法通过拖动其调整大小手柄来调整窗口大小。仍然可以使用size调整窗口大小。对于全屏窗口,此标志将被忽略。设置为unresizable

Flags FLAG_BORDERLESS = 1

该窗口没有本机标题栏和其他装饰。对于全屏窗口,此标志将被忽略。设置为borderless

Flags FLAG_ALWAYS_ON_TOP = 2

该窗口漂浮在所有其他窗口的顶部。对于全屏窗口,此标志将被忽略。使用always_on_top设置。

Flags FLAG_TRANSPARENT = 3

窗口背景可以是透明的。设置为transparent

注意:如果ProjectSettings.display/window/per_pixel_transparency/allowed或窗口的Viewport.transparent_bg设置为false,则此标志无效。

Flags FLAG_NO_FOCUS = 4

窗口无法聚焦。无焦点窗口将忽略所有输入,鼠标点击除外。设置为unfocusable

Flags FLAG_POPUP = 5

窗口是菜单或OptionButton下拉菜单的一部分。当窗口可见时,无法更改此标志。活动的弹出窗口将独占接收所有输入,而不会从其父窗口窃取焦点。当使用单击外部或切换应用程序时,弹出窗口会自动关闭。弹出窗口必须设置瞬态父窗口(请参阅transient)。

注意:此标志对嵌入式窗口无效(除非所述窗口是Popup)。

Flags FLAG_EXTEND_TO_TITLE = 6

窗口内容扩展到窗口的全尺寸。与无边框窗口不同,框架保持不变,可用于调整窗口大小,标题栏是透明的,但有最小化/最大化/关闭按钮。设置为extend_to_title

注意:此标志仅在macOS上实现。

注意:此标志在嵌入式窗口中无效。

Flags FLAG_MOUSE_PASSTHROUGH = 7

所有鼠标事件都传递到同一应用程序的底层窗口。

注意:此标志在嵌入式窗口中无效。

Flags FLAG_SHARP_CORNERS = 8

窗口样式被覆盖,强制锐角。

注意:此标志在嵌入式窗口中无效。

注意:此标志仅在Windows(11)上实现。

Flags FLAG_EXCLUDE_FROM_CAPTURE = 9

Windows从DisplayServer.screen_get_image()DisplayServer.screen_get_image_rect()DisplayServer.screen_get_pixel()拍摄的屏幕截图中排除。

注意:此标志在macOS和Windows上实现。

注意:设置此标志将不会阻止其他应用程序捕获图像,不应将其用作安全措施。

Flags FLAG_MAX = 10

Flags的最大值。


enum ContentScaleMode: 🔗

ContentScaleMode CONTENT_SCALE_MODE_DISABLED = 0

内容不会缩放以匹配Window的大小。

ContentScaleMode CONTENT_SCALE_MODE_CANVAS_ITEMS = 1

内容将以目标大小呈现。这比CONTENT_SCALE_MODE_VIEWPORT更performance-expensive,但提供了更好的结果。

ContentScaleMode CONTENT_SCALE_MODE_VIEWPORT = 2

内容将以基本大小呈现,然后缩放到目标大小。比CONTENT_SCALE_MODE_CANVAS_ITEMS性能更高,但会导致图像像素化。


enum ContentScaleAspect: 🔗

ContentScaleAspect CONTENT_SCALE_ASPECT_IGNORE = 0

方面将被忽略。缩放将简单地拉伸内容以适应目标大小。

ContentScaleAspect CONTENT_SCALE_ASPECT_KEEP = 1

内容的方面将被保留。如果目标大小与基本尺寸不同,图像将居中,黑色条将出现在左右两侧。

ContentScaleAspect CONTENT_SCALE_ASPECT_KEEP_WIDTH = 2

内容可以垂直展开,水平缩放会导致保持宽度比例,然后左右两边是黑条。

ContentScaleAspect CONTENT_SCALE_ASPECT_KEEP_HEIGHT = 3

内容可以水平扩展。垂直缩放将导致保持高度比,然后顶部和底部的黑色条。

ContentScaleAspect CONTENT_SCALE_ASPECT_EXPAND = 4

内容的方面将被保留。如果目标大小的方面与基本尺寸不同,内容将停留在左上角,并在拉伸的空间中添加额外的可见区域。


enum ContentScaleStretch: 🔗

ContentScaleStretch CONTENT_SCALE_STRETCH_FRACTIONAL = 0

内容将根据分数因子进行拉伸。这会填满窗口中所有可用的空间,但会由于像素缩放不均匀而导致“像素摆动”。

ContentScaleStretch CONTENT_SCALE_STRETCH_INTEGER = 1

内容将仅根据整数因子进行拉伸,保留清晰的像素。这可能会根据窗口大小在窗口边缘留下可见的黑色背景。


enum LayoutDirection: 🔗

LayoutDirection LAYOUT_DIRECTION_INHERITED = 0

自动布局方向,从父窗口布局方向确定。

LayoutDirection LAYOUT_DIRECTION_APPLICATION_LOCALE = 1

自动布局方向,由当前区域设置确定。

LayoutDirection LAYOUT_DIRECTION_LTR = 2

从左到右布局方向。

LayoutDirection LAYOUT_DIRECTION_RTL = 3

从右到左的布局方向。

LayoutDirection LAYOUT_DIRECTION_SYSTEM_LOCALE = 4

自动布局方向,由系统区域设置确定。

LayoutDirection LAYOUT_DIRECTION_MAX = 5

表示LayoutDirection枚举的大小。

LayoutDirection LAYOUT_DIRECTION_LOCALE = 1

已弃用: 请改用 LAYOUT_DIRECTION_APPLICATION_LOCALE


enum WindowInitialPosition: 🔗

WindowInitialPosition WINDOW_INITIAL_POSITION_ABSOLUTE = 0

初始窗口位置由position确定。

WindowInitialPosition WINDOW_INITIAL_POSITION_CENTER_PRIMARY_SCREEN = 1

初始窗口位置是主屏幕的中心。

WindowInitialPosition WINDOW_INITIAL_POSITION_CENTER_MAIN_WINDOW_SCREEN = 2

初始窗口位置是主窗口屏幕的中心。

WindowInitialPosition WINDOW_INITIAL_POSITION_CENTER_OTHER_SCREEN = 3

初始窗口位置是current_screen屏幕的中心。

WindowInitialPosition WINDOW_INITIAL_POSITION_CENTER_SCREEN_WITH_MOUSE_FOCUS = 4

初始窗口位置是包含鼠标指针的屏幕中心。

WindowInitialPosition WINDOW_INITIAL_POSITION_CENTER_SCREEN_WITH_KEYBOARD_FOCUS = 5

初始窗口位置是包含键盘焦点的窗口的屏幕中心。


常量

NOTIFICATION_VISIBILITY_CHANGED = 30 🔗

Window的可见性改变时发射,就在visibility_changed之前。

NOTIFICATION_THEME_CHANGED = 32 🔗

当节点需要刷新其主题项时发送。这发生在以下情况之一:

-theme属性在此节点或其任何祖先上更改。

-此节点上的theme_type_variation属性已更改。

-节点进入场景树。

注意:作为优化,此通知不会从该节点在场景树之外发生的更改中发送。相反,当节点进入场景树时,可以一次应用所有主题项更新。


属性说明

bool always_on_top = false 🔗

如果true,则该窗口将位于所有其他窗口之上。如果启用了transient,则不起作用。


bool auto_translate = true 🔗

  • void set_auto_translate(value: bool)

  • bool is_auto_translating()

已弃用: 改用 Item.auto_translate_mode

切换任何文本是否应根据当前语言环境自动更改为其翻译版本。


bool borderless = false 🔗

如果true,则窗口将没有边框。


ContentScaleAspect content_scale_aspect = 0 🔗

指定调整Window大小时内容的方面的行为。基本方面由content_scale_size确定。


float content_scale_factor = 1.0 🔗

  • void set_content_scale_factor(value: float)

  • float get_content_scale_factor()

指定Window内容的size等于content_scale_size时的基本比例。


ContentScaleMode content_scale_mode = 0 🔗

指定调整Window大小时内容的缩放方式。


Vector2i content_scale_size = Vector2i(0, 0) 🔗

  • void set_content_scale_size(value: Vector2i)

  • Vector2i get_content_scale_size()

内容的基本大小(即在窗口内绘制的节点)。如果非零,则当窗口调整为不同大小时,Window的内容将被缩放。


ContentScaleStretch content_scale_stretch = 0 🔗

用于确定2D元素的最终比例因子的策略。除了content_scale_size确定的自动比例因子之外,这还会影响content_scale_factor的应用方式。


int current_screen 🔗

  • void set_current_screen(value: int)

  • int get_current_screen()

窗口当前打开的屏幕。


bool exclude_from_capture = false 🔗

Windows从DisplayServer.screen_get_image()DisplayServer.screen_get_image_rect()DisplayServer.screen_get_pixel()拍摄的屏幕截图中排除。


bool exclusive = false 🔗

  • void set_exclusive(value: bool)

  • bool is_exclusive()

如果true,则Window将处于独占模式。独占窗口始终位于其父窗口之上,并将阻止所有进入父窗口的输入。

需要transient启用才能工作。


bool extend_to_title = false 🔗

如果true,则将Window内容扩展为窗口的全尺寸,窗口标题栏为透明。

注意:此属性仅在macOS上实现。

注意:此属性仅适用于本机窗口。


bool force_native = false 🔗

  • void set_force_native(value: bool)

  • bool get_force_native()

如果true,则无论父视口和项目设置如何,都将使用本机窗口。


WindowInitialPosition initial_position = 0 🔗

指定Window位置的初始类型。请参见WindowInitialPosition常量。


bool keep_title_visible = false 🔗

  • void set_keep_title_visible(value: bool)

  • bool get_keep_title_visible()

如果true,则展开Window宽度以保持标题栏文本完全可见。


Vector2i max_size = Vector2i(0, 0) 🔗

如果非零,则无法将Window调整为大于此大小。

注意:如果值低于min_size,该属性将被忽略。


Vector2i min_size = Vector2i(0, 0) 🔗

如果非零,则无法将Window调整为小于此大小。

注意:如果启用wrap_controls并且它的大小更大,则此属性将被忽略以支持get_contents_minimum_size()


Mode mode = 0 🔗

  • void set_mode(value: Mode)

  • Mode get_mode()

设置窗口的当前模式。

注意:全屏模式不是Windows和Linux上独有的全屏。

注意:此方法仅适用于本机窗口,即当主视口中禁用Viewport.gui_embed_subwindows时,主窗口和Window派生节点。


bool mouse_passthrough = false 🔗

如果true,则所有鼠标事件将传递到同一应用程序的底层窗口。另请参见mouse_passthrough_polygon

注意:此属性在Linux(X11)、macOS和Windows上实现。

注意:此属性仅适用于本机窗口。


PackedVector2Array mouse_passthrough_polygon = PackedVector2Array() 🔗

设置窗口的一个多边形区域,该区域接受鼠标事件。该区域之外的鼠标事件将被穿透处理。传入一个空数组将禁用穿透支持(所有鼠标事件都将被窗口拦截,这是默认行为)。

# 设置区域,使用Path节点。
 $Window.mouse_passthrough_polygon = $Path2D.curve.get_baked_points()

# 设置区域,使用polygon2d节点。
 $Window.mouse_passthrough_polygon = $Polygon2D.polygon

 # 重置区域默认。
 $Window.mouse_passthrough_polygon = []

注意:如果 mouse_passthrough 设置为true,则此属性将被忽略。

注意:在 Windows 系统上,窗口位于该区域之外的部分不会被绘制,而在 Linux(X11)和 macOS 系统上则会绘制。

注意:此属性在 Linux(X11)、macOS 和 Windows 系统上均已实现

注意:返回的数组是*复制*的,对其进行的任何更改都不会更新原始属性值。有关更多详细信息,请参阅 PackedVector2Array


bool popup_window = false 🔗

如果true,则Window将被视为弹出窗口。弹出窗口是在系统窗口管理器的窗口列表中不显示为单独窗口的子窗口,当在它们之外单击任何内容时会发送关闭请求(除非启用了exclusive)。


Vector2i position = Vector2i(0, 0) 🔗

窗口的位置(以像素为单位)。

如果ProjectSettings.display/window/subwindows/embed_subwindowsfalse,则该位置在绝对屏幕坐标中。这通常适用于编辑器插件。如果设置为true,则窗口的位置在其父Viewport的坐标中。

注意:此属性仅在initial_position设置为WINDOW_INITIAL_POSITION_ABSOLUTE时有效。


bool sharp_corners = false 🔗

如果trueWindow将覆盖操作系统窗口样式以显示尖角。

注意:此属性仅在Windows(11)上实现。

注意:此属性仅适用于本机窗口。


Vector2i size = Vector2i(100, 100) 🔗

窗口的大小(以像素为单位)。


Theme theme 🔗

此节点及其所有ControlWindow子节点使用的Theme资源。如果子节点有自己的Theme资源集,则主题项与具有更高优先级的子定义合并。

注意:Window样式将无效,除非嵌入窗口。


StringName theme_type_variation = &"" 🔗

Window用于查找自己的主题项的主题类型变体的名称。有关详细信息,请参阅Control.theme_type_variation


String title = "" 🔗

窗口的标题。如果Window是本机的,则Theme中设置的标题样式将无效。


bool transient = false 🔗

  • void set_transient(value: bool)

  • bool is_transient()

如果true,则Window是瞬态的,即它被视为另一个Window的子窗口。瞬态窗口将与其瞬态父窗口一起被销毁,并在关闭时将焦点返回给父窗口。瞬态窗口显示在非独占全屏父窗口的顶部。瞬态窗口不能进入全屏模式。

请注意,行为可能因平台而异。


bool transient_to_focused = false 🔗

  • void set_transient_to_focused(value: bool)

  • bool is_transient_to_focused()

如果true,并且Windowtransient,则此窗口将(在变得可见时)成为当前聚焦窗口的瞬态窗口,而不是层次结构中的直接父窗口。请注意,瞬态父窗口是在此窗口变得可见时分配的,因此在重新显示之前更改它没有效果。


bool transparent = false 🔗

如果true,则Window的背景可以是透明的。这最好用于嵌入式窗口。

注意:透明度支持在Linux、macOS和Windows上实现,但可用性可能因GPU驱动程序、显示管理器和合成器功能而异。

注意:如果ProjectSettings.display/window/per_pixel_transparency/allowed设置为false,则此属性无效。


bool unfocusable = false 🔗

如果true,则Window无法聚焦或与之交互。它仍然可以可见。


bool unresizable = false 🔗

如果true,则无法调整窗口大小。最小化和最大化按钮被禁用。


bool visible = true 🔗

  • void set_visible(value: bool)

  • bool is_visible()

如果true,则窗口可见。


bool wrap_controls = false 🔗

  • void set_wrap_controls(value: bool)

  • bool is_wrapping_controls()

如果true,则窗口的大小将在添加或删除子节点时自动更新,如果新大小更大,则忽略min_size

如果false,则需要手动调用child_controls_changed()


方法说明

Vector2 _get_contents_minimum_size() virtual const 🔗

用户要实现的虚拟方法。覆盖get_contents_minimum_size()返回的值。


void add_theme_color_override(name: StringName, color: Color) 🔗

为具有指定name的主题Color创建本地覆盖。为控件获取主题项时,本地覆盖始终优先。可以使用remove_theme_color_override()删除覆盖。

另见get_theme_color()Control.add_theme_color_override()了解更多详情。


void add_theme_constant_override(name: StringName, constant: int) 🔗

为具有指定name的主题常量创建本地覆盖。获取控件的主题项时,本地覆盖始终优先。可以使用remove_theme_constant_override()删除覆盖。

另见get_theme_constant()


void add_theme_font_override(name: StringName, font: Font) 🔗

为具有指定name的主题Font创建本地覆盖。为控件获取主题项时,本地覆盖始终优先。可以使用remove_theme_font_override()删除覆盖。

另见get_theme_font()


void add_theme_font_size_override(name: StringName, font_size: int) 🔗

使用指定的name为主题字体大小创建本地覆盖。获取控件的主题项时,本地覆盖始终优先。可以使用remove_theme_font_size_override()删除覆盖。

另见get_theme_font_size()


void add_theme_icon_override(name: StringName, texture: Texture2D) 🔗

为具有指定name的主题图标创建本地覆盖。获取控件的主题项时,本地覆盖始终优先。可以使用remove_theme_icon_override()删除覆盖。

另见get_theme_icon()


void add_theme_stylebox_override(name: StringName, stylebox: StyleBox) 🔗

为具有指定name的主题StyleBox创建本地覆盖。获取控件的主题项时,本地覆盖始终优先。可以使用remove_theme_stylebox_override()删除覆盖。

另见get_theme_stylebox()Control.add_theme_stylebox_override()了解更多详情。


void begin_bulk_theme_override() 🔗

防止*_theme_*_override方法发出NOTIFICATION_THEME_CHANGED,直到调用end_bulk_theme_override()


bool can_draw() const 🔗

返回窗口是否正在绘制到屏幕上。


void child_controls_changed() 🔗

请求更新Window大小以适应底层Control节点。


void end_bulk_theme_override() 🔗

结束批量主题覆盖更新。请参见begin_bulk_theme_override()


Vector2 get_contents_minimum_size() const 🔗

从窗口的子Control节点返回组合的最小大小。当子节点更改时,使用child_controls_changed()更新它。

此方法返回的值可以用_get_contents_minimum_size()覆盖。


bool get_flag(flag: Flags) const 🔗

如果设置了flag,则返回true


LayoutDirection get_layout_direction() const 🔗

返回布局方向和文本书写方向。


Vector2i get_position_with_decorations() const 🔗

返回窗口的位置,包括其边框。

注意:如果visiblefalse,则此方法返回与position相同的值。


Vector2i get_size_with_decorations() const 🔗

返回窗口的大小,包括其边框。

注意:如果visiblefalse,则此方法返回与size相同的值。


Color get_theme_color(name: StringName, theme_type: StringName = &"") const 🔗

从树中第一个匹配的Theme返回一个Color,如果该Theme具有具有指定nametheme_type的颜色项。

有关详细信息,请参见Control.get_theme_color()


int get_theme_constant(name: StringName, theme_type: StringName = &"") const 🔗

如果树中的第一个匹配的Theme具有具有指定nametheme_type的常量项,则返回该常量。

有关详细信息,请参见Control.get_theme_color()


float get_theme_default_base_scale() const 🔗

如果Theme具有有效的Theme.default_base_scale值,则从树中第一个匹配的Theme返回默认的基本比例值。

详见Control.get_theme_color()


Font get_theme_default_font() const 🔗

如果Theme具有有效的Theme.default_font值,则从树中第一个匹配的Theme返回默认字体。

详见Control.get_theme_color()


int get_theme_default_font_size() const 🔗

如果Theme具有有效的Theme.default_font_size值,则从树中第一个匹配的Theme返回默认字体大小值。

详见Control.get_theme_color()


Font get_theme_font(name: StringName, theme_type: StringName = &"") const 🔗

如果该Theme具有具有指定nametheme_type的字体项,则从树中第一个匹配的Theme返回Font

详见Control.get_theme_color()


int get_theme_font_size(name: StringName, theme_type: StringName = &"") const 🔗

如果该Theme具有具有指定nametheme_type的字体大小项,则从树中第一个匹配的Theme返回字体大小。

详见Control.get_theme_color()


Texture2D get_theme_icon(name: StringName, theme_type: StringName = &"") const 🔗

如果Theme具有具有指定nametheme_type的图标项,则从树中第一个匹配的Theme返回图标。

详见Control.get_theme_color()


StyleBox get_theme_stylebox(name: StringName, theme_type: StringName = &"") const 🔗

如果Theme具有具有指定nametheme_type的样式框项,则从树中第一个匹配的Theme返回StyleBox

详见Control.get_theme_color()


int get_window_id() const 🔗

返回窗口的ID。


void grab_focus() 🔗

使窗口抓住焦点,允许它接收用户输入。


bool has_focus() const 🔗

如果窗口被聚焦,则返回true


bool has_theme_color(name: StringName, theme_type: StringName = &"") const 🔗

返回true,如果树中有匹配的Theme,该主题具有具有指定nametheme_type的颜色项。

详见Control.get_theme_color()


bool has_theme_color_override(name: StringName) const 🔗

如果在此Control节点中具有指定name的主题Color有本地覆盖,则返回true

参见add_theme_color_override()


bool has_theme_constant(name: StringName, theme_type: StringName = &"") const 🔗

返回true,如果树中有一个匹配的Theme,该主题具有具有指定nametheme_type的常量项。

详见Control.get_theme_color()


bool has_theme_constant_override(name: StringName) const 🔗

如果此Control节点中具有指定name的主题常量存在本地覆盖,则返回true

参见add_theme_constant_override()


bool has_theme_font(name: StringName, theme_type: StringName = &"") const 🔗

返回true,如果树中有一个匹配的Theme具有指定的nametheme_type的字体项。

详见Control.get_theme_color()


bool has_theme_font_override(name: StringName) const 🔗

如果在此Control节点中具有指定name的主题Font有本地覆盖,则返回true

参见add_theme_font_override()


bool has_theme_font_size(name: StringName, theme_type: StringName = &"") const 🔗

返回true,如果树中有匹配的Theme,其字体大小项具有指定的nametheme_type

详见Control.get_theme_color()


bool has_theme_font_size_override(name: StringName) const 🔗

如果在此Control节点中具有指定name的主题字体大小存在本地覆盖,则返回true

参见add_theme_font_size_override()


bool has_theme_icon(name: StringName, theme_type: StringName = &"") const 🔗

返回true,如果树中有一个匹配的Theme,该主题具有具有指定nametheme_type的图标项。

详见Control.get_theme_color()


bool has_theme_icon_override(name: StringName) const 🔗

如果此Control节点中具有指定name的主题图标存在本地覆盖,则返回true

参见add_theme_icon_override()


bool has_theme_stylebox(name: StringName, theme_type: StringName = &"") const 🔗

返回true,如果树中有匹配的Theme,该主题具有具有指定nametheme_type的样式框项。

详见Control.get_theme_color()


bool has_theme_stylebox_override(name: StringName) const 🔗

如果在此Control节点中具有指定name的主题StyleBox有本地覆盖,则返回true

参见add_theme_stylebox_override()


void hide() 🔗

隐藏窗口。这与最小化状态不同。隐藏窗口不能与之交互,需要使用show()使其可见。


bool is_embedded() const 🔗

如果窗口当前嵌入在另一个窗口中,则返回true


bool is_layout_rtl() const 🔗

如果布局从右到左,则返回true


bool is_maximize_allowed() const 🔗

如果窗口可以最大化(最大化按钮已启用),则返回true


bool is_using_font_oversampling() const 🔗

如果启用字体过采样,则返回true。参见set_use_font_oversampling()


void move_to_center() 🔗

将本机窗口放在当前屏幕的中心,将嵌入窗口放在其嵌入器Viewport上。


void move_to_foreground() 🔗

已弃用: 请改用 grab_focus()

使窗口抓住焦点,允许它接收用户输入。


void popup(rect: Rect2i = Rect2i(0, 0, 0, 0)) 🔗

显示Window并使其瞬态(参见transient)。如果提供了rect,它将被设置为Window的大小。如果在主窗口上调用则失败。

如果rect的坐标是全局的,并且相对于主窗口的左上角(不包括窗口装饰)。如果rect的位置坐标是负数,则窗口将位于主窗口之外,因此可能不可见。

如果rect的坐标是全局的,并且相对于最左边屏幕的左上角。如果rect的位置坐标是负数,则窗口将被放置在屏幕的左上角。

注意:rect如果指定,必须在全局坐标中。


void popup_centered(minsize: Vector2i = Vector2i(0, 0)) 🔗

弹出当前屏幕中心的Window,可选给定最小大小。如果Window被嵌入,它将改为在父Viewport中居中。

注意:用默认值minsize调用它相当于用size调用它。


void popup_centered_clamped(minsize: Vector2i = Vector2i(0, 0), fallback_ratio: float = 0.75) 🔗

弹出以其父级Window为中心的Windowfallback_ratio确定Window相对于其父级的最大大小。

注意:用默认值minsize调用它相当于用size调用它。


void popup_centered_ratio(ratio: float = 0.8) 🔗

如果嵌入了Window,则弹出以其嵌入器为中心的Window,并将其大小设置为嵌入器大小的ratio

如果Window是本机窗口,则弹出其父Window屏幕内居中的Window并将其大小设置为屏幕大小的ratio


void popup_exclusive(from_node: Item, rect: Rect2i = Rect2i(0, 0, 0, 0)) 🔗

尝试将此对话框父级到相对于from_node的最后一个独占窗口,然后对其调用popup()。对话框必须没有当前父级,否则方法失败。

另见set_unparent_when_invisible()Item.get_last_exclusive_window()


void popup_exclusive_centered(from_node: Item, minsize: Vector2i = Vector2i(0, 0)) 🔗

尝试将此对话框父级到相对于from_node的最后一个独占窗口,然后调用popup_centered()。对话框必须没有当前父级,否则方法失败。

另见set_unparent_when_invisible()Item.get_last_exclusive_window()


void popup_exclusive_centered_clamped(from_node: Item, minsize: Vector2i = Vector2i(0, 0), fallback_ratio: float = 0.75) 🔗

尝试将此对话框父级到相对于from_node的最后一个独占窗口,然后调用popup_centered_clamped()。对话框必须没有当前父级,否则方法失败。

另见set_unparent_when_invisible()Item.get_last_exclusive_window()


void popup_exclusive_centered_ratio(from_node: Item, ratio: float = 0.8) 🔗

尝试将此对话框父级到相对于from_node的最后一个独占窗口,然后调用popup_centered_ratio()。对话框必须没有当前父级,否则方法失败。

另见set_unparent_when_invisible()Item.get_last_exclusive_window()


void popup_exclusive_on_parent(from_node: Item, parent_rect: Rect2i) 🔗

尝试将此对话框父级到相对于from_node的最后一个独占窗口,然后调用popup_on_parent()。对话框必须没有当前父级,否则方法失败。

另见set_unparent_when_invisible()Item.get_last_exclusive_window()


void popup_on_parent(parent_rect: Rect2i) 🔗

弹出位置随父Window位置移动的Window。如果嵌入了Window,则与popup()具有相同的效果。


void remove_theme_color_override(name: StringName) 🔗

删除先前由add_theme_color_override()或通过检查器停靠坞添加的具有指定name的主题Color的本地覆盖。


void remove_theme_constant_override(name: StringName) 🔗

删除先前由add_theme_constant_override()或通过检查器停靠坞添加的具有指定name的主题常量的本地覆盖。


void remove_theme_font_override(name: StringName) 🔗

删除先前由add_theme_font_override()或通过检查器停靠坞添加的具有指定name的主题Font的本地覆盖。


void remove_theme_font_size_override(name: StringName) 🔗

删除先前由add_theme_font_size_override()或通过检查器停靠坞添加的具有指定name的主题字体大小的本地覆盖。


void remove_theme_icon_override(name: StringName) 🔗

删除先前由add_theme_icon_override()或通过检查器停靠坞添加的具有指定name的主题图标的本地覆盖。


void remove_theme_stylebox_override(name: StringName) 🔗

删除主题StyleBox的本地覆盖,其指定的name先前由add_theme_stylebox_override()或通过检查器停靠坞添加。


void request_attention() 🔗

告诉操作系统Window需要注意。这会使窗口以某种方式突出,具体取决于系统,例如它可能会在任务栏上闪烁。


void reset_size() 🔗

将大小重置为最小大小,即min_size和(如果启用wrap_controlsget_contents_minimum_size()的最大值。这相当于调用set_size(Vector2i())(或低于最小值的任何大小)。


void set_flag(flag: Flags, enabled: bool) 🔗

设置指定的窗口标志。


void set_ime_active(active: bool) 🔗

如果activetrue,则启用系统的本机IME(输入法编辑器)。


void set_ime_position(position: Vector2i) 🔗

将IME移动到给定位置。


void set_layout_direction(direction: LayoutDirection) 🔗

设置布局方向和文本书写方向。某些语言(例如阿拉伯语和希伯来语)需要从右到左的布局。


void set_unparent_when_invisible(unparent: bool) 🔗

如果unparenttrue,则窗口在不可见时自动取消父级。

注意:确保保留对节点的引用,否则它将被孤立。如果窗口没有父级,您还需要手动调用Item.queue_free()来释放窗口。


void set_use_font_oversampling(enable: bool) 🔗

启用字体过采样。这使得字体在放大时看起来更好。


void show() 🔗

使Window出现。这启用了与Window的交互,并且不会更改其除可见性之外的任何属性(与例如popup()不同)。


void start_drag() 🔗

使用当前鼠标位置在窗口上启动交互式拖动操作。在处理正在按下的鼠标按钮时调用此方法以模拟窗口标题栏上的按下事件。使用此方法允许窗口参与空间切换、平铺和其他系统功能。


void start_resize(edge: WindowResizeEdge) 🔗

使用当前鼠标位置在窗口上启动交互式调整大小操作。在处理正在按下的鼠标按钮时调用此方法以模拟窗口边缘的按下事件。


主题属性说明

Color title_color = Color(0.875, 0.875, 0.875, 1) 🔗

标题文本的颜色。


Color title_outline_modulate = Color(0, 0, 0, 1) 🔗

标题文本轮廓的颜色。


int close_h_offset = 18 🔗

关闭按钮的水平位置偏移。


int close_v_offset = 24 🔗

关闭按钮的垂直位置偏移。


int resize_margin = 4 🔗

定义可以用鼠标抓取窗口边框并调整大小的外边距。


int title_height = 36 🔗

标题栏的高度。


int title_outline_size = 0 🔗

标题大纲的大小。


Font title_font 🔗

用于绘制标题的字体。


int title_font_size 🔗

标题字体的大小。


Texture2D close 🔗

关闭按钮的图标。


Texture2D close_pressed 🔗

按下关闭按钮时的图标。


StyleBox embedded_border 🔗

嵌入Window时使用的背景样式。请注意,这仅在窗口内容下绘制,不包括标题。对于正确的边框和标题栏样式,您可以使用expand_margin_*StyleBoxFlat的属性。

注意:除非启用transparent,否则内容背景将不可见。


StyleBox embedded_unfocused_border 🔗

Window嵌入且未聚焦时使用的背景样式。