class_scrollcontainer.rst 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  1. :github_url: hide
  2. .. DO NOT EDIT THIS FILE!!!
  3. .. Generated automatically from Godot engine sources.
  4. .. Generator: https://github.com/godotengine/godot/tree/4.0/doc/tools/make_rst.py.
  5. .. XML source: https://github.com/godotengine/godot/tree/4.0/doc/classes/ScrollContainer.xml.
  6. .. _class_ScrollContainer:
  7. ScrollContainer
  8. ===============
  9. **Inherits:** :ref:`Container<class_Container>` **<** :ref:`Control<class_Control>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
  10. **Inherited By:** :ref:`EditorInspector<class_EditorInspector>`
  11. A container used to provide scrollbars to a child control when needed.
  12. .. rst-class:: classref-introduction-group
  13. Description
  14. -----------
  15. A container used to provide a child control with scrollbars when needed. Scrollbars will automatically be drawn at the right (for vertical) or bottom (for horizontal) and will enable dragging to move the viewable Control (and its children) within the ScrollContainer. Scrollbars will also automatically resize the grabber based on the :ref:`Control.custom_minimum_size<class_Control_property_custom_minimum_size>` of the Control relative to the ScrollContainer.
  16. .. rst-class:: classref-introduction-group
  17. Tutorials
  18. ---------
  19. - :doc:`Using Containers <../tutorials/ui/gui_containers>`
  20. .. rst-class:: classref-reftable-group
  21. Properties
  22. ----------
  23. .. table::
  24. :widths: auto
  25. +----------------------------------------------------+--------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
  26. | :ref:`bool<class_bool>` | clip_contents | ``true`` (overrides :ref:`Control<class_Control_property_clip_contents>`) |
  27. +----------------------------------------------------+--------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
  28. | :ref:`bool<class_bool>` | :ref:`follow_focus<class_ScrollContainer_property_follow_focus>` | ``false`` |
  29. +----------------------------------------------------+--------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
  30. | :ref:`ScrollMode<enum_ScrollContainer_ScrollMode>` | :ref:`horizontal_scroll_mode<class_ScrollContainer_property_horizontal_scroll_mode>` | ``1`` |
  31. +----------------------------------------------------+--------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
  32. | :ref:`int<class_int>` | :ref:`scroll_deadzone<class_ScrollContainer_property_scroll_deadzone>` | ``0`` |
  33. +----------------------------------------------------+--------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
  34. | :ref:`int<class_int>` | :ref:`scroll_horizontal<class_ScrollContainer_property_scroll_horizontal>` | ``0`` |
  35. +----------------------------------------------------+--------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
  36. | :ref:`int<class_int>` | :ref:`scroll_vertical<class_ScrollContainer_property_scroll_vertical>` | ``0`` |
  37. +----------------------------------------------------+--------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
  38. | :ref:`ScrollMode<enum_ScrollContainer_ScrollMode>` | :ref:`vertical_scroll_mode<class_ScrollContainer_property_vertical_scroll_mode>` | ``1`` |
  39. +----------------------------------------------------+--------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
  40. .. rst-class:: classref-reftable-group
  41. Methods
  42. -------
  43. .. table::
  44. :widths: auto
  45. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
  46. | void | :ref:`ensure_control_visible<class_ScrollContainer_method_ensure_control_visible>` **(** :ref:`Control<class_Control>` control **)** |
  47. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
  48. | :ref:`HScrollBar<class_HScrollBar>` | :ref:`get_h_scroll_bar<class_ScrollContainer_method_get_h_scroll_bar>` **(** **)** |
  49. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
  50. | :ref:`VScrollBar<class_VScrollBar>` | :ref:`get_v_scroll_bar<class_ScrollContainer_method_get_v_scroll_bar>` **(** **)** |
  51. +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
  52. .. rst-class:: classref-reftable-group
  53. Theme Properties
  54. ----------------
  55. .. table::
  56. :widths: auto
  57. +---------------------------------+-------------------------------------------------------+
  58. | :ref:`StyleBox<class_StyleBox>` | :ref:`panel<class_ScrollContainer_theme_style_panel>` |
  59. +---------------------------------+-------------------------------------------------------+
  60. .. rst-class:: classref-section-separator
  61. ----
  62. .. rst-class:: classref-descriptions-group
  63. Signals
  64. -------
  65. .. _class_ScrollContainer_signal_scroll_ended:
  66. .. rst-class:: classref-signal
  67. **scroll_ended** **(** **)**
  68. Emitted when scrolling stops.
  69. .. rst-class:: classref-item-separator
  70. ----
  71. .. _class_ScrollContainer_signal_scroll_started:
  72. .. rst-class:: classref-signal
  73. **scroll_started** **(** **)**
  74. Emitted when scrolling is started.
  75. .. rst-class:: classref-section-separator
  76. ----
  77. .. rst-class:: classref-descriptions-group
  78. Enumerations
  79. ------------
  80. .. _enum_ScrollContainer_ScrollMode:
  81. .. rst-class:: classref-enumeration
  82. enum **ScrollMode**:
  83. .. _class_ScrollContainer_constant_SCROLL_MODE_DISABLED:
  84. .. rst-class:: classref-enumeration-constant
  85. :ref:`ScrollMode<enum_ScrollContainer_ScrollMode>` **SCROLL_MODE_DISABLED** = ``0``
  86. Scrolling disabled, scrollbar will be invisible.
  87. .. _class_ScrollContainer_constant_SCROLL_MODE_AUTO:
  88. .. rst-class:: classref-enumeration-constant
  89. :ref:`ScrollMode<enum_ScrollContainer_ScrollMode>` **SCROLL_MODE_AUTO** = ``1``
  90. Scrolling enabled, scrollbar will be visible only if necessary, i.e. container's content is bigger than the container.
  91. .. _class_ScrollContainer_constant_SCROLL_MODE_SHOW_ALWAYS:
  92. .. rst-class:: classref-enumeration-constant
  93. :ref:`ScrollMode<enum_ScrollContainer_ScrollMode>` **SCROLL_MODE_SHOW_ALWAYS** = ``2``
  94. Scrolling enabled, scrollbar will be always visible.
  95. .. _class_ScrollContainer_constant_SCROLL_MODE_SHOW_NEVER:
  96. .. rst-class:: classref-enumeration-constant
  97. :ref:`ScrollMode<enum_ScrollContainer_ScrollMode>` **SCROLL_MODE_SHOW_NEVER** = ``3``
  98. Scrolling enabled, scrollbar will be hidden.
  99. .. rst-class:: classref-section-separator
  100. ----
  101. .. rst-class:: classref-descriptions-group
  102. Property Descriptions
  103. ---------------------
  104. .. _class_ScrollContainer_property_follow_focus:
  105. .. rst-class:: classref-property
  106. :ref:`bool<class_bool>` **follow_focus** = ``false``
  107. .. rst-class:: classref-property-setget
  108. - void **set_follow_focus** **(** :ref:`bool<class_bool>` value **)**
  109. - :ref:`bool<class_bool>` **is_following_focus** **(** **)**
  110. If ``true``, the ScrollContainer will automatically scroll to focused children (including indirect children) to make sure they are fully visible.
  111. .. rst-class:: classref-item-separator
  112. ----
  113. .. _class_ScrollContainer_property_horizontal_scroll_mode:
  114. .. rst-class:: classref-property
  115. :ref:`ScrollMode<enum_ScrollContainer_ScrollMode>` **horizontal_scroll_mode** = ``1``
  116. .. rst-class:: classref-property-setget
  117. - void **set_horizontal_scroll_mode** **(** :ref:`ScrollMode<enum_ScrollContainer_ScrollMode>` value **)**
  118. - :ref:`ScrollMode<enum_ScrollContainer_ScrollMode>` **get_horizontal_scroll_mode** **(** **)**
  119. Controls whether horizontal scrollbar can be used and when it should be visible. See :ref:`ScrollMode<enum_ScrollContainer_ScrollMode>` for options.
  120. .. rst-class:: classref-item-separator
  121. ----
  122. .. _class_ScrollContainer_property_scroll_deadzone:
  123. .. rst-class:: classref-property
  124. :ref:`int<class_int>` **scroll_deadzone** = ``0``
  125. .. rst-class:: classref-property-setget
  126. - void **set_deadzone** **(** :ref:`int<class_int>` value **)**
  127. - :ref:`int<class_int>` **get_deadzone** **(** **)**
  128. Deadzone for touch scrolling. Lower deadzone makes the scrolling more sensitive.
  129. .. rst-class:: classref-item-separator
  130. ----
  131. .. _class_ScrollContainer_property_scroll_horizontal:
  132. .. rst-class:: classref-property
  133. :ref:`int<class_int>` **scroll_horizontal** = ``0``
  134. .. rst-class:: classref-property-setget
  135. - void **set_h_scroll** **(** :ref:`int<class_int>` value **)**
  136. - :ref:`int<class_int>` **get_h_scroll** **(** **)**
  137. The current horizontal scroll value.
  138. \ **Note:** If you are setting this value in the :ref:`Node._ready<class_Node_method__ready>` function or earlier, it needs to be wrapped with :ref:`Object.set_deferred<class_Object_method_set_deferred>`, since scroll bar's :ref:`Range.max_value<class_Range_property_max_value>` is not initialized yet.
  139. ::
  140. func _ready():
  141. set_deferred("scroll_horizontal", 600)
  142. .. rst-class:: classref-item-separator
  143. ----
  144. .. _class_ScrollContainer_property_scroll_vertical:
  145. .. rst-class:: classref-property
  146. :ref:`int<class_int>` **scroll_vertical** = ``0``
  147. .. rst-class:: classref-property-setget
  148. - void **set_v_scroll** **(** :ref:`int<class_int>` value **)**
  149. - :ref:`int<class_int>` **get_v_scroll** **(** **)**
  150. The current vertical scroll value.
  151. \ **Note:** Setting it early needs to be deferred, just like in :ref:`scroll_horizontal<class_ScrollContainer_property_scroll_horizontal>`.
  152. ::
  153. func _ready():
  154. set_deferred("scroll_vertical", 600)
  155. .. rst-class:: classref-item-separator
  156. ----
  157. .. _class_ScrollContainer_property_vertical_scroll_mode:
  158. .. rst-class:: classref-property
  159. :ref:`ScrollMode<enum_ScrollContainer_ScrollMode>` **vertical_scroll_mode** = ``1``
  160. .. rst-class:: classref-property-setget
  161. - void **set_vertical_scroll_mode** **(** :ref:`ScrollMode<enum_ScrollContainer_ScrollMode>` value **)**
  162. - :ref:`ScrollMode<enum_ScrollContainer_ScrollMode>` **get_vertical_scroll_mode** **(** **)**
  163. Controls whether vertical scrollbar can be used and when it should be visible. See :ref:`ScrollMode<enum_ScrollContainer_ScrollMode>` for options.
  164. .. rst-class:: classref-section-separator
  165. ----
  166. .. rst-class:: classref-descriptions-group
  167. Method Descriptions
  168. -------------------
  169. .. _class_ScrollContainer_method_ensure_control_visible:
  170. .. rst-class:: classref-method
  171. void **ensure_control_visible** **(** :ref:`Control<class_Control>` control **)**
  172. Ensures the given ``control`` is visible (must be a direct or indirect child of the ScrollContainer). Used by :ref:`follow_focus<class_ScrollContainer_property_follow_focus>`.
  173. \ **Note:** This will not work on a node that was just added during the same frame. If you want to scroll to a newly added child, you must wait until the next frame using :ref:`SceneTree.process_frame<class_SceneTree_signal_process_frame>`:
  174. ::
  175. add_child(child_node)
  176. await get_tree().process_frame
  177. ensure_control_visible(child_node)
  178. .. rst-class:: classref-item-separator
  179. ----
  180. .. _class_ScrollContainer_method_get_h_scroll_bar:
  181. .. rst-class:: classref-method
  182. :ref:`HScrollBar<class_HScrollBar>` **get_h_scroll_bar** **(** **)**
  183. Returns the horizontal scrollbar :ref:`HScrollBar<class_HScrollBar>` of this **ScrollContainer**.
  184. \ **Warning:** This is a required internal node, removing and freeing it may cause a crash. If you wish to disable or hide a scrollbar, you can use :ref:`horizontal_scroll_mode<class_ScrollContainer_property_horizontal_scroll_mode>`.
  185. .. rst-class:: classref-item-separator
  186. ----
  187. .. _class_ScrollContainer_method_get_v_scroll_bar:
  188. .. rst-class:: classref-method
  189. :ref:`VScrollBar<class_VScrollBar>` **get_v_scroll_bar** **(** **)**
  190. Returns the vertical scrollbar :ref:`VScrollBar<class_VScrollBar>` of this **ScrollContainer**.
  191. \ **Warning:** This is a required internal node, removing and freeing it may cause a crash. If you wish to disable or hide a scrollbar, you can use :ref:`vertical_scroll_mode<class_ScrollContainer_property_vertical_scroll_mode>`.
  192. .. rst-class:: classref-section-separator
  193. ----
  194. .. rst-class:: classref-descriptions-group
  195. Theme Property Descriptions
  196. ---------------------------
  197. .. _class_ScrollContainer_theme_style_panel:
  198. .. rst-class:: classref-themeproperty
  199. :ref:`StyleBox<class_StyleBox>` **panel**
  200. The background :ref:`StyleBox<class_StyleBox>` of the **ScrollContainer**.
  201. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  202. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  203. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  204. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  205. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  206. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`