Object Hierarchy:

Object hierarchy for Notebook


[ CCode ( type_id = "gtk_notebook_get_type ()" ) ]
public class Notebook : Widget, Accessible, Buildable, ConstraintTarget

`GtkNotebook` is a container whose children are pages switched between using tabs.

![An example GtkNotebook](notebook.png)

There are many configuration options for `GtkNotebook`. Among other things, you can choose on which edge the tabs appear (see [ method@Gtk.Notebook.set_tab_pos]), whether, if there are too many tabs to fit the notebook should be made bigger or scrolling arrows added (see [method@Gtk.Notebook.set_scrollable]), and whether there will be a popup menu allowing the users to switch pages. (see [ method@Gtk.Notebook.popup_enable]).

GtkNotebook as GtkBuildable

The `GtkNotebook` implementation of the `GtkBuildable` interface supports placing children into tabs by specifying “tab” as the “type” attribute of a <child> element. Note that the content of the tab must be created before the tab can be filled. A tab child can be specified without specifying a <child> type attribute.

To add a child widget in the notebooks action area, specify "action-start" or “action-end” as the “type” attribute of the <child> element.

An example of a UI definition fragment with `GtkNotebook`:

```xml <object class="GtkNotebook"> <child> <object class="GtkLabel" id="notebook-content"> <property name="label"> Content</property> </object> </child> <child type="tab"> <object class="GtkLabel" id="notebook-tab"> < property name="label">Tab</property> </object> </child> </object> ```

CSS nodes

``` notebook ├── │ ├── [<action widget>] │ ├── tabs │ │ ├── [arrow] │ │ ├── tab │ │ │ ╰── <tab label> ┊ ┊ ┊ │ │ ├── tab[.reorderable-page] │ │ │ ╰── <tab label> │ │ ╰── [arrow] │ ╰── [<action widget>] │ ╰── stack ├── <child> ┊ ╰── <child> ```

`GtkNotebook` has a main CSS node with name `notebook`, a subnode with name `header` and below that a subnode with name `tabs` which contains one subnode per tab with name `tab`.

If action widgets are present, their CSS nodes are placed next to the `tabs` node. If the notebook is scrollable, CSS nodes with name `arrow` are placed as first and last child of the `tabs` node.

The main node gets the `.frame` style class when the notebook has a border (see [method@Gtk.Notebook.set_show_border]).

The header node gets one of the style class `.top`, `.bottom`, `.left` or `.right`, depending on where the tabs are placed. For reorderable pages, the tab node gets the `.reorderable-page` class.

A `tab` node gets the `.dnd` style class while it is moved with drag-and-drop.

The nodes are always arranged from left-to-right, regardless of text direction.


`GtkNotebook` uses the following roles:

  • gtk_accessible_role_group for the notebook widget
  • gtk_accessible_role_tab_list for the list of tabs
  • gtk_accessible_role_tab role for each tab
  • gtk_accessible_role_tab_panel for each page

Namespace: Gtk
Package: gtk4



Creation methods:



Inherited Members:

All known members inherited from class Gtk.Widget