GTK+ 3 Reference Manual: GtkButtonBox

## GtkButtonBox GtkButtonBox — A container for arranging buttons |

## Synopsis

    #include <gtk/gtk.h>

    struct              GtkButtonBox;
    struct              GtkButtonBoxClass;
    GtkWidget *         gtk_button_box_new                  (GtkOrientation orientation);
    GtkButtonBoxStyle   gtk_button_box_get_layout           (GtkButtonBox *widget);
    gboolean            gtk_button_box_get_child_secondary  (GtkButtonBox *widget,
                                                             GtkWidget *child);
    gboolean            gtk_button_box_get_child_non_homogeneous
                                                            (GtkButtonBox *widget,
                                                             GtkWidget *child);
    void                gtk_button_box_set_layout           (GtkButtonBox *widget,
                                                             GtkButtonBoxStyle layout_style);
    void                gtk_button_box_set_child_secondary  (GtkButtonBox *widget,
                                                             GtkWidget *child,
                                                             gboolean is_secondary);
    void                gtk_button_box_set_child_non_homogeneous
                                                            (GtkButtonBox *widget,
                                                             GtkWidget *child,
                                                             gboolean non_homogeneous);

## Object Hierarchy

      GObject
       +----GInitiallyUnowned
             +----GtkWidget
                   +----GtkContainer
                         +----GtkBox
                               +----GtkButtonBox
                                     +----GtkHButtonBox
                                     +----GtkVButtonBox

## Implemented Interfaces

GtkButtonBox implements AtkImplementorIface, GtkBuildable and GtkOrientable.

## Properties

      "layout-style"             GtkButtonBoxStyle     : Read / Write

## Child Properties

      "non-homogeneous"          gboolean              : Read / Write
      "secondary"                gboolean              : Read / Write

## Style Properties

      "child-internal-pad-x"     gint                  : Read
      "child-internal-pad-y"     gint                  : Read
      "child-min-height"         gint                  : Read
      "child-min-width"          gint                  : Read

## Description

A button box should be used to provide a consistent layout of buttons throughout your application. The layout/spacing can be altered by the programmer, or if desired, by the user to alter the 'feel' of a program to a small degree.

`gtk_button_box_get_layout()` and `gtk_button_box_set_layout()` retrieve and alter the method used to spread the buttons in a button box across the container, respectively.

The main purpose of GtkButtonBox is to make sure the children have all the same size. GtkButtonBox gives all children the same size, but it does allow 'outliers' to keep their own larger size.

To excempt individual children from homogeneous sizing regardless of their 'outlier' status, you can set the non-homogeneous child property.

## Details

### struct GtkButtonBox

    struct GtkButtonBox;

### struct GtkButtonBoxClass

    struct GtkButtonBoxClass {
      GtkBoxClass parent_class;
    };

GtkBoxClass `parent_class`; | The parent class.

### gtk_button_box_new ()

    GtkWidget *         gtk_button_box_new                  (GtkOrientation orientation);

Creates a new GtkButtonBox.

`orientation` : | the box' orientation.
Returns : | a new GtkButtonBox.

Since 3.0

### gtk_button_box_get_layout ()

    GtkButtonBoxStyle   gtk_button_box_get_layout           (GtkButtonBox *widget);

Retrieves the method being used to arrange the buttons in a button box.

`widget` : | a GtkButtonBox
Returns : | the method used to lay out buttons in `widget`.

### gtk_button_box_get_child_secondary ()

    gboolean            gtk_button_box_get_child_secondary  (GtkButtonBox *widget,
                                                             GtkWidget *child);

Returns whether `child` should appear in a secondary group of children.

`widget` : | a GtkButtonBox
`child` : | a child of `widget`
Returns : | whether `child` should appear in a secondary group of children.

Since 2.4

### gtk_button_box_get_child_non_homogeneous ()

    gboolean            gtk_button_box_get_child_non_homogeneous
                                                            (GtkButtonBox *widget,
                                                             GtkWidget *child);

Returns whether the child is exempted from homogenous sizing.

`widget` : | a GtkButtonBox
`child` : | a child of `widget`
Returns : | `TRUE` if the child is not subject to homogenous sizing

Since 3.2

### gtk_button_box_set_layout ()

    void                gtk_button_box_set_layout           (GtkButtonBox *widget,
                                                             GtkButtonBoxStyle layout_style);

Changes the way buttons are arranged in their container.

`widget` : | a GtkButtonBox
`layout_style` : | the new layout style

### gtk_button_box_set_child_secondary ()

    void                gtk_button_box_set_child_secondary  (GtkButtonBox *widget,
                                                             GtkWidget *child,
                                                             gboolean is_secondary);

Sets whether `child` should appear in a secondary group of children. A typical use of a secondary child is the help button in a dialog.

This group appears after the other children if the style is `GTK_BUTTONBOX_START`, `GTK_BUTTONBOX_SPREAD` or `GTK_BUTTONBOX_EDGE`, and before the other children if the style is `GTK_BUTTONBOX_END`. For horizontal button boxes, the definition of before/after depends on direction of the widget (see `gtk_widget_set_direction()`). If the style is `GTK_BUTTONBOX_START` or `GTK_BUTTONBOX_END`, then the secondary children are aligned at the other end of the button box from the main children. For the other styles, they appear immediately next to the main children.

`widget` : | a GtkButtonBox
`child` : | a child of `widget`
`is_secondary` : | if `TRUE`, the `child` appears in a secondary group of the button box.

### gtk_button_box_set_child_non_homogeneous ()

    void                gtk_button_box_set_child_non_homogeneous
                                                            (GtkButtonBox *widget,
                                                             GtkWidget *child,
                                                             gboolean non_homogeneous);

Sets whether the child is exempted from homogeous sizing.

`widget` : | a GtkButtonBox
`child` : | a child of `widget`
`non_homogeneous` : | the new value

Since 3.2

## Property Details

### The `"layout-style"` property

      "layout-style"             GtkButtonBoxStyle     : Read / Write

How to lay out the buttons in the box. Possible values are: spread, edge, start and end.

Default value: GTK_BUTTONBOX_EDGE

## Child Property Details

### The `"non-homogeneous"` child property

      "non-homogeneous"          gboolean              : Read / Write

If TRUE, the child will not be subject to homogeneous sizing.

Default value: FALSE

### The `"secondary"` child property

      "secondary"                gboolean              : Read / Write

If TRUE, the child appears in a secondary group of children, suitable for, e.g., help buttons.

Default value: FALSE

## Style Property Details

### The `"child-internal-pad-x"` style property

      "child-internal-pad-x"     gint                  : Read

Amount to increase child's size on either side.

Allowed values: >= 0

Default value: 4

### The `"child-internal-pad-y"` style property

      "child-internal-pad-y"     gint                  : Read

Amount to increase child's size on the top and bottom.

Allowed values: >= 0

Default value: 0

### The `"child-min-height"` style property

      "child-min-height"         gint                  : Read

Minimum height of buttons inside the box.

Allowed values: >= 0

Default value: 27

### The `"child-min-width"` style property

      "child-min-width"          gint                  : Read

Minimum width of buttons inside the box.

Allowed values: >= 0

Default value: 85