Files
godot-docs-l10n/classes/zh_CN/class_splitcontainer.rst

481 lines
21 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

:github_url: hide
.. DO NOT EDIT THIS FILE!!!
.. Generated automatically from Godot engine sources.
.. Generator: https://github.com/godotengine/godot/tree/4.4/doc/tools/make_rst.py.
.. XML source: https://github.com/godotengine/godot/tree/4.4/doc/classes/SplitContainer.xml.
.. _class_SplitContainer:
SplitContainer
==============
**继承:** :ref:`Container<class_Container>` **<** :ref:`Control<class_Control>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
**派生:** :ref:`HSplitContainer<class_HSplitContainer>`, :ref:`VSplitContainer<class_VSplitContainer>`
将两个子控件垂直或水平分隔的容器,提供了用于调整分隔比例的抓取器。
.. rst-class:: classref-introduction-group
描述
----
仅接受两个子控件的容器,会将它们垂直或水平排列,在中间创建一个分隔条。分隔条可以拖拽,从而改变两个控件的大小关系。
.. rst-class:: classref-introduction-group
教程
----
- :doc:`使用容器 <../tutorials/ui/gui_containers>`
.. rst-class:: classref-reftable-group
属性
----
.. table::
:widths: auto
+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------+-----------+
| :ref:`bool<class_bool>` | :ref:`collapsed<class_SplitContainer_property_collapsed>` | ``false`` |
+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------+-----------+
| :ref:`bool<class_bool>` | :ref:`drag_area_highlight_in_editor<class_SplitContainer_property_drag_area_highlight_in_editor>` | ``false`` |
+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------+-----------+
| :ref:`int<class_int>` | :ref:`drag_area_margin_begin<class_SplitContainer_property_drag_area_margin_begin>` | ``0`` |
+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------+-----------+
| :ref:`int<class_int>` | :ref:`drag_area_margin_end<class_SplitContainer_property_drag_area_margin_end>` | ``0`` |
+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------+-----------+
| :ref:`int<class_int>` | :ref:`drag_area_offset<class_SplitContainer_property_drag_area_offset>` | ``0`` |
+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------+-----------+
| :ref:`DraggerVisibility<enum_SplitContainer_DraggerVisibility>` | :ref:`dragger_visibility<class_SplitContainer_property_dragger_visibility>` | ``0`` |
+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------+-----------+
| :ref:`bool<class_bool>` | :ref:`dragging_enabled<class_SplitContainer_property_dragging_enabled>` | ``true`` |
+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------+-----------+
| :ref:`int<class_int>` | :ref:`split_offset<class_SplitContainer_property_split_offset>` | ``0`` |
+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------+-----------+
| :ref:`bool<class_bool>` | :ref:`vertical<class_SplitContainer_property_vertical>` | ``false`` |
+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------+-----------+
.. rst-class:: classref-reftable-group
方法
----
.. table::
:widths: auto
+-------------------------------+---------------------------------------------------------------------------------------+
| |void| | :ref:`clamp_split_offset<class_SplitContainer_method_clamp_split_offset>`\ (\ ) |
+-------------------------------+---------------------------------------------------------------------------------------+
| :ref:`Control<class_Control>` | :ref:`get_drag_area_control<class_SplitContainer_method_get_drag_area_control>`\ (\ ) |
+-------------------------------+---------------------------------------------------------------------------------------+
.. rst-class:: classref-reftable-group
主题属性
--------
.. table::
:widths: auto
+-----------------------------------+-------------------------------------------------------------------------------------------+--------+
| :ref:`int<class_int>` | :ref:`autohide<class_SplitContainer_theme_constant_autohide>` | ``1`` |
+-----------------------------------+-------------------------------------------------------------------------------------------+--------+
| :ref:`int<class_int>` | :ref:`minimum_grab_thickness<class_SplitContainer_theme_constant_minimum_grab_thickness>` | ``6`` |
+-----------------------------------+-------------------------------------------------------------------------------------------+--------+
| :ref:`int<class_int>` | :ref:`separation<class_SplitContainer_theme_constant_separation>` | ``12`` |
+-----------------------------------+-------------------------------------------------------------------------------------------+--------+
| :ref:`Texture2D<class_Texture2D>` | :ref:`grabber<class_SplitContainer_theme_icon_grabber>` | |
+-----------------------------------+-------------------------------------------------------------------------------------------+--------+
| :ref:`Texture2D<class_Texture2D>` | :ref:`h_grabber<class_SplitContainer_theme_icon_h_grabber>` | |
+-----------------------------------+-------------------------------------------------------------------------------------------+--------+
| :ref:`Texture2D<class_Texture2D>` | :ref:`v_grabber<class_SplitContainer_theme_icon_v_grabber>` | |
+-----------------------------------+-------------------------------------------------------------------------------------------+--------+
| :ref:`StyleBox<class_StyleBox>` | :ref:`split_bar_background<class_SplitContainer_theme_style_split_bar_background>` | |
+-----------------------------------+-------------------------------------------------------------------------------------------+--------+
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
信号
----
.. _class_SplitContainer_signal_drag_ended:
.. rst-class:: classref-signal
**drag_ended**\ (\ ) :ref:`🔗<class_SplitContainer_signal_drag_ended>`
用户结束拖拽时发出。
.. rst-class:: classref-item-separator
----
.. _class_SplitContainer_signal_drag_started:
.. rst-class:: classref-signal
**drag_started**\ (\ ) :ref:`🔗<class_SplitContainer_signal_drag_started>`
用户开始拖拽时发出。
.. rst-class:: classref-item-separator
----
.. _class_SplitContainer_signal_dragged:
.. rst-class:: classref-signal
**dragged**\ (\ offset\: :ref:`int<class_int>`\ ) :ref:`🔗<class_SplitContainer_signal_dragged>`
当用户拖动拖动器时发出。
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
枚举
----
.. _enum_SplitContainer_DraggerVisibility:
.. rst-class:: classref-enumeration
enum **DraggerVisibility**: :ref:`🔗<enum_SplitContainer_DraggerVisibility>`
.. _class_SplitContainer_constant_DRAGGER_VISIBLE:
.. rst-class:: classref-enumeration-constant
:ref:`DraggerVisibility<enum_SplitContainer_DraggerVisibility>` **DRAGGER_VISIBLE** = ``0``
:ref:`autohide<class_SplitContainer_theme_constant_autohide>```false`` 时,拆分拖动器始终可见,否则仅在鼠标在拖动器上悬停时可见。
拖动器图标的大小决定了最小间隔 :ref:`separation<class_SplitContainer_theme_constant_separation>`\ 。
拖动器图标如果比拆分条长,就会自动隐藏。
.. _class_SplitContainer_constant_DRAGGER_HIDDEN:
.. rst-class:: classref-enumeration-constant
:ref:`DraggerVisibility<enum_SplitContainer_DraggerVisibility>` **DRAGGER_HIDDEN** = ``1``
拆分拖动器图标始终不可见,无视 :ref:`autohide<class_SplitContainer_theme_constant_autohide>` 的值。
拖动器图标的大小决定了最小间隔 :ref:`separation<class_SplitContainer_theme_constant_separation>`\ 。
.. _class_SplitContainer_constant_DRAGGER_HIDDEN_COLLAPSED:
.. rst-class:: classref-enumeration-constant
:ref:`DraggerVisibility<enum_SplitContainer_DraggerVisibility>` **DRAGGER_HIDDEN_COLLAPSED** = ``2``
拆分拖动器图标不可见,拆分条粗细折叠为零。
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
属性说明
--------
.. _class_SplitContainer_property_collapsed:
.. rst-class:: classref-property
:ref:`bool<class_bool>` **collapsed** = ``false`` :ref:`🔗<class_SplitContainer_property_collapsed>`
.. rst-class:: classref-property-setget
- |void| **set_collapsed**\ (\ value\: :ref:`bool<class_bool>`\ )
- :ref:`bool<class_bool>` **is_collapsed**\ (\ )
如果为 ``true``\ ,则会禁用拖动器,子节点会根据 :ref:`split_offset<class_SplitContainer_property_split_offset>```0`` 时的情况来调整大小。
.. rst-class:: classref-item-separator
----
.. _class_SplitContainer_property_drag_area_highlight_in_editor:
.. rst-class:: classref-property
:ref:`bool<class_bool>` **drag_area_highlight_in_editor** = ``false`` :ref:`🔗<class_SplitContainer_property_drag_area_highlight_in_editor>`
.. rst-class:: classref-property-setget
- |void| **set_drag_area_highlight_in_editor**\ (\ value\: :ref:`bool<class_bool>`\ )
- :ref:`bool<class_bool>` **is_drag_area_highlight_in_editor_enabled**\ (\ )
高亮拖动区域 :ref:`Rect2<class_Rect2>`\ ,便于在开发时查看位置。\ :ref:`dragging_enabled<class_SplitContainer_property_dragging_enabled>```true`` 时拖动区域为金色,为 ``false`` 时则为红色。
.. rst-class:: classref-item-separator
----
.. _class_SplitContainer_property_drag_area_margin_begin:
.. rst-class:: classref-property
:ref:`int<class_int>` **drag_area_margin_begin** = ``0`` :ref:`🔗<class_SplitContainer_property_drag_area_margin_begin>`
.. rst-class:: classref-property-setget
- |void| **set_drag_area_margin_begin**\ (\ value\: :ref:`int<class_int>`\ )
- :ref:`int<class_int>` **get_drag_area_margin_begin**\ (\ )
减少可拖动区域和拆分条 :ref:`split_bar_background<class_SplitContainer_theme_style_split_bar_background>` 在容器起始侧的大小。
.. rst-class:: classref-item-separator
----
.. _class_SplitContainer_property_drag_area_margin_end:
.. rst-class:: classref-property
:ref:`int<class_int>` **drag_area_margin_end** = ``0`` :ref:`🔗<class_SplitContainer_property_drag_area_margin_end>`
.. rst-class:: classref-property-setget
- |void| **set_drag_area_margin_end**\ (\ value\: :ref:`int<class_int>`\ )
- :ref:`int<class_int>` **get_drag_area_margin_end**\ (\ )
减少可拖动区域和拆分条 :ref:`split_bar_background<class_SplitContainer_theme_style_split_bar_background>` 在容器结尾侧的大小。
.. rst-class:: classref-item-separator
----
.. _class_SplitContainer_property_drag_area_offset:
.. rst-class:: classref-property
:ref:`int<class_int>` **drag_area_offset** = ``0`` :ref:`🔗<class_SplitContainer_property_drag_area_offset>`
.. rst-class:: classref-property-setget
- |void| **set_drag_area_offset**\ (\ value\: :ref:`int<class_int>`\ )
- :ref:`int<class_int>` **get_drag_area_offset**\ (\ )
将拖动区域在容器轴向上进行偏移,防止拖动区域与 :ref:`ScrollBar<class_ScrollBar>` 或其他子节点的可选中 :ref:`Control<class_Control>` 发生重叠。
.. rst-class:: classref-item-separator
----
.. _class_SplitContainer_property_dragger_visibility:
.. rst-class:: classref-property
:ref:`DraggerVisibility<enum_SplitContainer_DraggerVisibility>` **dragger_visibility** = ``0`` :ref:`🔗<class_SplitContainer_property_dragger_visibility>`
.. rst-class:: classref-property-setget
- |void| **set_dragger_visibility**\ (\ value\: :ref:`DraggerVisibility<enum_SplitContainer_DraggerVisibility>`\ )
- :ref:`DraggerVisibility<enum_SplitContainer_DraggerVisibility>` **get_dragger_visibility**\ (\ )
决定拖动器是否可见。详见 :ref:`DraggerVisibility<enum_SplitContainer_DraggerVisibility>`\ 。该属性无法决定拖动器是否启用,这一需求请使用 :ref:`dragging_enabled<class_SplitContainer_property_dragging_enabled>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_SplitContainer_property_dragging_enabled:
.. rst-class:: classref-property
:ref:`bool<class_bool>` **dragging_enabled** = ``true`` :ref:`🔗<class_SplitContainer_property_dragging_enabled>`
.. rst-class:: classref-property-setget
- |void| **set_dragging_enabled**\ (\ value\: :ref:`bool<class_bool>`\ )
- :ref:`bool<class_bool>` **is_dragging_enabled**\ (\ )
启用或禁用拆分拖拽。
.. rst-class:: classref-item-separator
----
.. _class_SplitContainer_property_split_offset:
.. rst-class:: classref-property
:ref:`int<class_int>` **split_offset** = ``0`` :ref:`🔗<class_SplitContainer_property_split_offset>`
.. rst-class:: classref-property-setget
- |void| **set_split_offset**\ (\ value\: :ref:`int<class_int>`\ )
- :ref:`int<class_int>` **get_split_offset**\ (\ )
两个 :ref:`Control<class_Control>` 之间拆分的初始偏移量,\ ``0`` 位于第一个 :ref:`Control<class_Control>` 的末尾。
.. rst-class:: classref-item-separator
----
.. _class_SplitContainer_property_vertical:
.. rst-class:: classref-property
:ref:`bool<class_bool>` **vertical** = ``false`` :ref:`🔗<class_SplitContainer_property_vertical>`
.. rst-class:: classref-property-setget
- |void| **set_vertical**\ (\ value\: :ref:`bool<class_bool>`\ )
- :ref:`bool<class_bool>` **is_vertical**\ (\ )
如果为 ``true``\ ,则该 **SplitContainer** 会垂直排列其子代,而不是水平排列。
在使用 :ref:`HSplitContainer<class_HSplitContainer>` 和 :ref:`VSplitContainer<class_VSplitContainer>` 时无法改变。
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
方法说明
--------
.. _class_SplitContainer_method_clamp_split_offset:
.. rst-class:: classref-method
|void| **clamp_split_offset**\ (\ ) :ref:`🔗<class_SplitContainer_method_clamp_split_offset>`
限制 :ref:`split_offset<class_SplitContainer_property_split_offset>` 值不超出当前可能的最小值和最大值。
.. rst-class:: classref-item-separator
----
.. _class_SplitContainer_method_get_drag_area_control:
.. rst-class:: classref-method
:ref:`Control<class_Control>` **get_drag_area_control**\ (\ ) :ref:`🔗<class_SplitContainer_method_get_drag_area_control>`
返回拖拽区域 :ref:`Control<class_Control>`\ 。例如你可以把一个预先配置好的按钮放到拖拽区域 :ref:`Control<class_Control>` 中,这样这个按钮就会跟随拆分条移动。调用 ``reparent()`` 前请尝试将 :ref:`Button<class_Button>` 的锚点设置为 ``center``\ 。
::
$BarnacleButton.reparent($SplitContainer.get_drag_area_control())
\ **注意:**\ 拖拽区域 :ref:`Control<class_Control>` 绘制在 **SplitContainer** 的子节点之上,因此 :ref:`Control<class_Control>` 调用 :ref:`CanvasItem<class_CanvasItem>` 绘制方法所绘制的内容和添加至 :ref:`Control<class_Control>` 的子节点也会显示在 **SplitContainer** 的子节点之上。如果需要阻止鼠标拖动,请尝试将自定义子节点的 :ref:`Control.mouse_filter<class_Control_property_mouse_filter>` 设置为 :ref:`Control.MOUSE_FILTER_IGNORE<class_Control_constant_MOUSE_FILTER_IGNORE>`\ 。
\ **警告:**\ 这是必要的内部节点,将其移除或释放都可能造成崩溃。
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
主题属性说明
------------
.. _class_SplitContainer_theme_constant_autohide:
.. rst-class:: classref-themeproperty
:ref:`int<class_int>` **autohide** = ``1`` :ref:`🔗<class_SplitContainer_theme_constant_autohide>`
布尔值。如果为 ``1``\ \ ``true``\ ),则拖动器不在鼠标下方时会自动隐藏。如果为 ``0``\ \ ``false``\ )则始终可见。\ :ref:`dragger_visibility<class_SplitContainer_property_dragger_visibility>` 必须为 :ref:`DRAGGER_VISIBLE<class_SplitContainer_constant_DRAGGER_VISIBLE>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_SplitContainer_theme_constant_minimum_grab_thickness:
.. rst-class:: classref-themeproperty
:ref:`int<class_int>` **minimum_grab_thickness** = ``6`` :ref:`🔗<class_SplitContainer_theme_constant_minimum_grab_thickness>`
拆分条上用户可点击抓取区域的最小厚度。能够确保拆分条在 :ref:`separation<class_SplitContainer_theme_constant_separation>`:ref:`h_grabber<class_SplitContainer_theme_icon_h_grabber>` / :ref:`v_grabber<class_SplitContainer_theme_icon_v_grabber>` 过窄、难以选中时仍然可以拖动。
.. rst-class:: classref-item-separator
----
.. _class_SplitContainer_theme_constant_separation:
.. rst-class:: classref-themeproperty
:ref:`int<class_int>` **separation** = ``12`` :ref:`🔗<class_SplitContainer_theme_constant_separation>`
拆分条的粗细,即容器中两个子节点的间隙。如果 :ref:`dragger_visibility<class_SplitContainer_property_dragger_visibility>`:ref:`DRAGGER_VISIBLE<class_SplitContainer_constant_DRAGGER_VISIBLE>` 或者为 :ref:`DRAGGER_HIDDEN<class_SplitContainer_constant_DRAGGER_HIDDEN>` 的同时 :ref:`separation<class_SplitContainer_theme_constant_separation>` 比拖动器图标相应方向的大小要小,这个粗细就会被拖动器图标的大小覆盖。
\ **注意:**\ 如果要让 :ref:`separation<class_SplitContainer_theme_constant_separation>` 比拖动器图标大小要小,例如想要设成 ``1 px`` 的细线,请将 :ref:`h_grabber<class_SplitContainer_theme_icon_h_grabber>`:ref:`v_grabber<class_SplitContainer_theme_icon_v_grabber>` 设为新的 :ref:`ImageTexture<class_ImageTexture>`\ ,这样就把拖动器图标的大小设为了 ``0 px``\ 。
.. rst-class:: classref-item-separator
----
.. _class_SplitContainer_theme_icon_grabber:
.. rst-class:: classref-themeproperty
:ref:`Texture2D<class_Texture2D>` **grabber** :ref:`🔗<class_SplitContainer_theme_icon_grabber>`
在中间区域绘制的抓取图标。
.. rst-class:: classref-item-separator
----
.. _class_SplitContainer_theme_icon_h_grabber:
.. rst-class:: classref-themeproperty
:ref:`Texture2D<class_Texture2D>` **h_grabber** :ref:`🔗<class_SplitContainer_theme_icon_h_grabber>`
:ref:`vertical<class_SplitContainer_property_vertical>```false`` 时绘制在中间区域的抓取器图标。
.. rst-class:: classref-item-separator
----
.. _class_SplitContainer_theme_icon_v_grabber:
.. rst-class:: classref-themeproperty
:ref:`Texture2D<class_Texture2D>` **v_grabber** :ref:`🔗<class_SplitContainer_theme_icon_v_grabber>`
:ref:`vertical<class_SplitContainer_property_vertical>```true`` 时绘制在中间区域的抓取器图标。
.. rst-class:: classref-item-separator
----
.. _class_SplitContainer_theme_style_split_bar_background:
.. rst-class:: classref-themeproperty
:ref:`StyleBox<class_StyleBox>` **split_bar_background** :ref:`🔗<class_SplitContainer_theme_style_split_bar_background>`
决定拆分条厚度大于零时的背景。
.. |virtual| replace:: :abbr:`virtual (本方法通常需要用户覆盖才能生效。)`
.. |const| replace:: :abbr:`const (本方法无副作用,不会修改该实例的任何成员变量。)`
.. |vararg| replace:: :abbr:`vararg (本方法除了能接受在此处描述的参数外,还能够继续接受任意数量的参数。)`
.. |constructor| replace:: :abbr:`constructor (本方法用于构造某个类型。)`
.. |static| replace:: :abbr:`static (调用本方法无需实例,可直接使用类名进行调用。)`
.. |operator| replace:: :abbr:`operator (本方法描述的是使用本类型作为左操作数的有效运算符。)`
.. |bitfield| replace:: :abbr:`BitField (这个值是由下列位标志构成位掩码的整数。)`
.. |void| replace:: :abbr:`void (无返回值。)`