### Class

# Gtk Stack

#### Description [src]

    final class Gtk.Stack : Gtk.Widget {
      /* No available fields */
    }

`GtkStack` is a container which only shows one of its children at a time.

In contrast to `GtkNotebook`, `GtkStack` does not provide a means for users to change the visible child. Instead, a separate widget such as `GtkStackSwitcher` or `GtkStackSidebar` can be used with `GtkStack` to provide this functionality.

Transitions between pages can be animated as slides or fades. This can be controlled with gtk_stack_set_transition_type(). These animations respect the `GtkSettings:gtk-enable-animations` setting.

`GtkStack` maintains a `GtkStackPage` object for each added child, which holds additional per-child properties. You obtain the `GtkStackPage` for a child with gtk_stack_get_page() and you can obtain a `GtkSelectionModel` containing all the pages with gtk_stack_get_pages().

# GtkStack as GtkBuildable

To set child-specific properties in a .ui file, create `GtkStackPage` objects explicitly, and set the child widget as a property on it:

      <object class="GtkStack" id="stack">
        <child>
          <object class="GtkStackPage">
            <property name="name">page1</property>
            <property name="title">In the beginning…</property>
            <property name="child">
              <object class="GtkLabel">
                <property name="label">It was dark</property>
              </object>
            </property>
          </object>
        </child>

# CSS nodes

`GtkStack` has a single CSS node named stack.

# Accessibility

`GtkStack` uses the `GTK_ACCESSIBLE_ROLE_TAB_PANEL` for the stack pages, which are the accessible parent objects of the child widgets.

#### Hierarchy

#### Ancestors

- GtkWidget
- GInitiallyUnowned
- GObject

#### Implements

- GtkAccessible
- GtkBuildable
- GtkConstraintTarget

#### Constructors

###### gtk_stack_new

Creates a new `GtkStack`.

#### Instance methods

###### gtk_stack_add_child

Adds a child to `stack`.

###### gtk_stack_add_named

Adds a child to `stack`.

###### gtk_stack_add_titled

Adds a child to `stack`.

###### gtk_stack_get_child_by_name

Finds the child with the name given as the argument.

###### gtk_stack_get_hhomogeneous

Gets whether `stack` is horizontally homogeneous.

###### gtk_stack_get_interpolate_size

Returns whether the `GtkStack` is set up to interpolate between the sizes of children on page switch.

###### gtk_stack_get_page

Returns the `GtkStackPage` object for `child`.

###### gtk_stack_get_pages

Returns a `GListModel` that contains the pages of the stack.

###### gtk_stack_get_transition_duration

Returns the amount of time (in milliseconds) that transitions between pages in `stack` will take.

###### gtk_stack_get_transition_running

Returns whether the `stack` is currently in a transition from one page to another.

###### gtk_stack_get_transition_type

Gets the type of animation that will be used for transitions between pages in `stack`.

###### gtk_stack_get_vhomogeneous

Gets whether `stack` is vertically homogeneous.

###### gtk_stack_get_visible_child

Gets the currently visible child of `stack`.

###### gtk_stack_get_visible_child_name

Returns the name of the currently visible child of `stack`.

###### gtk_stack_remove

Removes a child widget from `stack`.

###### gtk_stack_set_hhomogeneous

Sets the `GtkStack` to be horizontally homogeneous or not.

###### gtk_stack_set_interpolate_size

Sets whether or not `stack` will interpolate its size when changing the visible child.

###### gtk_stack_set_transition_duration

Sets the duration that transitions between pages in `stack` will take.

###### gtk_stack_set_transition_type

Sets the type of animation that will be used for transitions between pages in `stack`.

###### gtk_stack_set_vhomogeneous

Sets the `GtkStack` to be vertically homogeneous or not.

###### gtk_stack_set_visible_child

Makes `child` the visible child of `stack`.

###### gtk_stack_set_visible_child_full

Makes the child with the given name visible.

###### gtk_stack_set_visible_child_name

Makes the child with the given name visible.

##### Methods inherited from GtkWidget (159)

##### Methods inherited from GtkAccessible (10)

###### gtk_accessible_get_accessible_role

Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.

###### gtk_accessible_reset_property

Resets the accessible `property` to its default value.

###### gtk_accessible_reset_relation

Resets the accessible `relation` to its default value.

###### gtk_accessible_reset_state

Resets the accessible `state` to its default value.

###### gtk_accessible_update_property

Updates a list of accessible properties.

###### gtk_accessible_update_property_value

Updates an array of accessible properties.

###### gtk_accessible_update_relation

Updates a list of accessible relations.

###### gtk_accessible_update_relation_value

Updates an array of accessible relations.

###### gtk_accessible_update_state

Updates a list of accessible states. See the `GtkAccessibleState` documentation for the value types of accessible states.

###### gtk_accessible_update_state_value

Updates an array of accessible states.

##### Methods inherited from GtkBuildable (1)

###### gtk_buildable_get_buildable_id

Gets the ID of the `buildable` object.

#### Properties

###### Gtk.Stack:hhomogeneous

`TRUE` if the stack allocates the same width for all children.

###### Gtk.Stack:interpolate-size

Whether or not the size should smoothly change during the transition.

###### Gtk.Stack:pages

A selection model with the stack pages.

###### Gtk.Stack:transition-duration

The animation duration, in milliseconds.

###### Gtk.Stack:transition-running

Whether or not the transition is currently running.

###### Gtk.Stack:transition-type

The type of animation used to transition.

###### Gtk.Stack:vhomogeneous

`TRUE` if the stack allocates the same height for all children.

###### Gtk.Stack:visible-child

The widget currently visible in the stack.

###### Gtk.Stack:visible-child-name

The name of the widget currently visible in the stack.

##### Properties inherited from GtkWidget (34)

###### Gtk.Widget:can-focus

Whether the widget or any of its descendents can accept the input focus.

###### Gtk.Widget:can-target

Whether the widget can receive pointer events.

###### Gtk.Widget:css-classes

A list of css classes applied to this widget.

###### Gtk.Widget:css-name

The name of this widget in the CSS tree.

###### Gtk.Widget:cursor

The cursor used by `widget`.

###### Gtk.Widget:focus-on-click

Whether the widget should grab focus when it is clicked with the mouse.

###### Gtk.Widget:focusable

Whether this widget itself will accept the input focus.

###### Gtk.Widget:halign

How to distribute horizontal space if widget gets extra space.

###### Gtk.Widget:has-default

Whether the widget is the default widget.

###### Gtk.Widget:has-focus

Whether the widget has the input focus.

###### Gtk.Widget:has-tooltip

Enables or disables the emission of the ::query-tooltip signal on `widget`.

###### Gtk.Widget:height-request

Override for height request of the widget.

###### Gtk.Widget:hexpand

Whether to expand horizontally.

###### Gtk.Widget:hexpand-set

Whether to use the `hexpand` property.

###### Gtk.Widget:layout-manager

The `GtkLayoutManager` instance to use to compute the preferred size of the widget, and allocate its children.

###### Gtk.Widget:margin-bottom

Margin on bottom side of widget.

###### Gtk.Widget:margin-end

Margin on end of widget, horizontally.

###### Gtk.Widget:margin-start

Margin on start of widget, horizontally.

###### Gtk.Widget:margin-top

Margin on top side of widget.

###### Gtk.Widget:name

The name of the widget.

###### Gtk.Widget:opacity

The requested opacity of the widget.

###### Gtk.Widget:overflow

How content outside the widget’s content area is treated.

###### Gtk.Widget:parent

The parent widget of this widget.

###### Gtk.Widget:receives-default

Whether the widget will receive the default action when it is focused.

###### Gtk.Widget:root

The `GtkRoot` widget of the widget tree containing this widget.

###### Gtk.Widget:scale-factor

The scale factor of the widget.

###### Gtk.Widget:sensitive

Whether the widget responds to input.

###### Gtk.Widget:tooltip-markup

Sets the text of tooltip to be the given string, which is marked up with Pango markup.

###### Gtk.Widget:tooltip-text

Sets the text of tooltip to be the given string.

###### Gtk.Widget:valign

How to distribute vertical space if widget gets extra space.

###### Gtk.Widget:vexpand

Whether to expand vertically.

###### Gtk.Widget:vexpand-set

Whether to use the `vexpand` property.

###### Gtk.Widget:visible

Whether the widget is visible.

###### Gtk.Widget:width-request

Override for width request of the widget.

##### Properties inherited from GtkAccessible (1)

###### Gtk.Accessible:accessible-role

The accessible role of the given `GtkAccessible` implementation.