### Class

# GtkGrid

#### Description [src]

    class Gtk.Grid : Gtk.Widget
      implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget, Gtk.Orientable {
      /* No available fields */
    }

`GtkGrid` is a container which arranges its child widgets in rows and columns.

It supports arbitrary positions and horizontal/vertical spans.

Children are added using `gtk_grid_attach()`. They can span multiple rows or columns. It is also possible to add a child next to an existing child, using `gtk_grid_attach_next_to()`. To remove a child from the grid, use `gtk_grid_remove()`.

The behaviour of `GtkGrid` when several children occupy the same grid cell is undefined.

# GtkGrid as GtkBuildable

Every child in a `GtkGrid` has access to a custom `GtkBuildable` element, called `<layout>`. It can by used to specify a position in the grid and optionally spans. All properties that can be used in the `<layout>` element are implemented by `GtkGridLayoutChild`.

It is implemented by `GtkWidget` using `GtkLayoutManager`.

To showcase it, here is a simple example:

    <object class="GtkGrid" id="my_grid">
      <child>
        <object class="GtkButton" id="button1">
          <property name="label">Button 1</property>
          <layout>
            <property name="column">0</property>
            <property name="row">0</property>
          </layout>
        </object>
      </child>
      <child>
        <object class="GtkButton" id="button2">
          <property name="label">Button 2</property>
          <layout>
            <property name="column">1</property>
            <property name="row">0</property>
          </layout>
        </object>
      </child>
      <child>
        <object class="GtkButton" id="button3">
          <property name="label">Button 3</property>
          <layout>
            <property name="column">2</property>
            <property name="row">0</property>
            <property name="row-span">2</property>
          </layout>
        </object>
      </child>
      <child>
        <object class="GtkButton" id="button4">
          <property name="label">Button 4</property>
          <layout>
            <property name="column">0</property>
            <property name="row">1</property>
            <property name="column-span">2</property>
          </layout>
        </object>
      </child>
    </object>

It organizes the first two buttons side-by-side in one cell each. The third button is in the last column but spans across two rows. This is defined by the `row-span` property. The last button is located in the second row and spans across two columns, which is defined by the `column-span` property.

# CSS nodes

`GtkGrid` uses a single CSS node with name `grid`.

# Accessibility

Until GTK 4.10, `GtkGrid` used the `GTK_ACCESSIBLE_ROLE_GROUP` role.

Starting from GTK 4.12, `GtkGrid` uses the `GTK_ACCESSIBLE_ROLE_GENERIC` role.

#### Hierarchy

#### Ancestors

- GtkWidget
- GInitiallyUnowned
- GObject

#### Implements

- GtkAccessible
- GtkBuildable
- GtkConstraintTarget
- GtkOrientable

#### Constructors

###### gtk_grid_new

Creates a new grid widget.

#### Instance methods

###### gtk_grid_attach

Adds a widget to the grid.

###### gtk_grid_attach_next_to

Adds a widget to the grid.

###### gtk_grid_get_baseline_row

Returns which row defines the global baseline of `grid`.

###### gtk_grid_get_child_at

Gets the child of `grid` whose area covers the grid cell at `column`, `row`.

###### gtk_grid_get_column_homogeneous

Returns whether all columns of `grid` have the same width.

###### gtk_grid_get_column_spacing

Returns the amount of space between the columns of `grid`.

###### gtk_grid_get_row_baseline_position

Returns the baseline position of `row`.

###### gtk_grid_get_row_homogeneous

Returns whether all rows of `grid` have the same height.

###### gtk_grid_get_row_spacing

Returns the amount of space between the rows of `grid`.

###### gtk_grid_insert_column

Inserts a column at the specified position.

###### gtk_grid_insert_next_to

Inserts a row or column at the specified position.

###### gtk_grid_insert_row

Inserts a row at the specified position.

###### gtk_grid_query_child

Queries the attach points and spans of `child` inside the given `GtkGrid`.

###### gtk_grid_remove

Removes a child from `grid`.

###### gtk_grid_remove_column

Removes a column from the grid.

###### gtk_grid_remove_row

Removes a row from the grid.

###### gtk_grid_set_baseline_row

Sets which row defines the global baseline for the entire grid.

###### gtk_grid_set_column_homogeneous

Sets whether all columns of `grid` will have the same width.

###### gtk_grid_set_column_spacing

Sets the amount of space between columns of `grid`.

###### gtk_grid_set_row_baseline_position

Sets how the baseline should be positioned on `row` of the grid, in case that row is assigned more space than is requested.

###### gtk_grid_set_row_homogeneous

Sets whether all rows of `grid` will have the same height.

###### gtk_grid_set_row_spacing

Sets the amount of space between rows of `grid`.

##### Methods inherited from GtkWidget (162)

Please see GtkWidget for a full list of methods.

##### Methods inherited from GObject (43)

Please see GObject for a full list of methods.

##### Methods inherited from GtkAccessible (19)

###### gtk_accessible_announce

Requests the user’s screen reader to announce the given message.

since: 4.14

###### gtk_accessible_get_accessible_parent

Retrieves the accessible parent for an accessible object.

since: 4.10

###### gtk_accessible_get_accessible_role

Retrieves the accessible role of an accessible object.

###### gtk_accessible_get_at_context

Retrieves the accessible implementation for the given `GtkAccessible`.

since: 4.10

###### gtk_accessible_get_bounds

Queries the coordinates and dimensions of this accessible.

since: 4.10

###### gtk_accessible_get_first_accessible_child

Retrieves the first accessible child of an accessible object.

since: 4.10

###### gtk_accessible_get_next_accessible_sibling

Retrieves the next accessible sibling of an accessible object.

since: 4.10

###### gtk_accessible_get_platform_state

Query a platform state, such as focus.

since: 4.10

###### 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_set_accessible_parent

Sets the parent and sibling of an accessible object.

since: 4.10

###### gtk_accessible_update_next_accessible_sibling

Updates the next accessible sibling of `self`.

since: 4.10

###### 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.

##### Methods inherited from GtkOrientable (2)

###### gtk_orientable_get_orientation

Retrieves the orientation of the `orientable`.

###### gtk_orientable_set_orientation

Sets the orientation of the `orientable`.

#### Properties

###### Gtk.Grid:baseline-row

The row to align to the baseline when valign is using baseline alignment.

###### Gtk.Grid:column-homogeneous

If `TRUE`, the columns are all the same width.

###### Gtk.Grid:column-spacing

The amount of space between two consecutive columns.

###### Gtk.Grid:row-homogeneous

If `TRUE`, the rows are all the same height.

###### Gtk.Grid:row-spacing

The amount of space between two consecutive rows.

##### 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)

###### GtkAccessible:accessible-role

The accessible role of the given `GtkAccessible` implementation.

##### Properties inherited from GtkOrientable (1)

###### GtkOrientable:orientation

The orientation of the orientable.

#### Signals

##### Signals inherited from GtkWidget (13)

###### GtkWidget::destroy

Signals that all holders of a reference to the widget should release the reference that they hold.

###### GtkWidget::direction-changed

Emitted when the text direction of a widget changes.

###### GtkWidget::hide

Emitted when `widget` is hidden.

###### GtkWidget::keynav-failed

Emitted if keyboard navigation fails.

###### GtkWidget::map

Emitted when `widget` is going to be mapped.

###### GtkWidget::mnemonic-activate

Emitted when a widget is activated via a mnemonic.

###### GtkWidget::move-focus

Emitted when the focus is moved.

###### GtkWidget::query-tooltip

Emitted when the widget’s tooltip is about to be shown.

###### GtkWidget::realize

Emitted when `widget` is associated with a `GdkSurface`.

###### GtkWidget::show

Emitted when `widget` is shown.

###### GtkWidget::state-flags-changed

Emitted when the widget state changes.

###### GtkWidget::unmap

Emitted when `widget` is going to be unmapped.

###### GtkWidget::unrealize

Emitted when the `GdkSurface` associated with `widget` is destroyed.

##### Signals inherited from GObject (1)

###### GObject::notify

The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.

#### Class structure

    struct GtkGridClass {
      GtkWidgetClass parent_class;

    }

No description available.

###### Class members

`parent_class: GtkWidgetClass`

  The parent class.