## GtkButton

GtkButton — A widget that creates a signal when clicked on

## Functions

GtkWidget * | gtk_button_new ()
GtkWidget * | gtk_button_new_with_label ()
GtkWidget * | gtk_button_new_with_mnemonic ()
GtkWidget * | gtk_button_new_from_stock ()
void | gtk_button_pressed ()
void | gtk_button_released ()
void | gtk_button_clicked ()
void | gtk_button_enter ()
void | gtk_button_leave ()
void | gtk_button_set_relief ()
GtkReliefStyle | gtk_button_get_relief ()
const gchar * | gtk_button_get_label ()
void | gtk_button_set_label ()
gboolean | gtk_button_get_use_stock ()
void | gtk_button_set_use_stock ()
gboolean | gtk_button_get_use_underline ()
void | gtk_button_set_use_underline ()
void | gtk_button_set_focus_on_click ()
gboolean | gtk_button_get_focus_on_click ()
void | gtk_button_set_alignment ()
void | gtk_button_get_alignment ()
void | gtk_button_set_image ()
GtkWidget * | gtk_button_get_image ()
void | gtk_button_set_image_position ()
GtkPositionType | gtk_button_get_image_position ()
GdkWindow * | gtk_button_get_event_window ()

## Properties

gboolean | focus-on-click | Read / Write
GtkWidget * | image | Read / Write
GtkPositionType | image-position | Read / Write
gchar * | label | Read / Write / Construct
GtkReliefStyle | relief | Read / Write
gboolean | use-stock | Read / Write / Construct
gboolean | use-underline | Read / Write / Construct
gfloat | xalign | Read / Write
gfloat | yalign | Read / Write

## Style Properties

gint | child-displacement-x | Read
gint | child-displacement-y | Read
GtkBorder * | default-border | Read
GtkBorder * | default-outside-border | Read
gboolean | displace-focus | Read
gint | image-spacing | Read
GtkBorder * | inner-border | Read

## Signals

void | activate | Action
void | clicked | Action
void | enter | Run First
void | leave | Run First
void | pressed | Run First
void | released | Run First

## Types and Values

struct | GtkButton

## Object Hierarchy

        GObject
        ╰── GInitiallyUnowned
            ╰── GtkObject
                ╰── GtkWidget
                    ╰── GtkContainer
                        ╰── GtkBin
                            ╰── GtkButton
                                ├── GtkToggleButton
                                ├── GtkColorButton
                                ├── GtkFontButton
                                ├── GtkLinkButton
                                ├── GtkOptionMenu
                                ╰── GtkScaleButton

## Implemented Interfaces

GtkButton implements AtkImplementorIface, GtkBuildable and GtkActivatable.

## Includes

    #include <gtk/gtk.h>

## Description

The GtkButton widget is generally used to attach a function to that is called when the button is pressed. The various signals and how to use them are outlined below.

The GtkButton widget can hold any valid child widget. That is it can hold most any other standard GtkWidget. The most commonly used child is the GtkLabel.

## Functions

### gtk_button_new ()

    GtkWidget *
    gtk_button_new (void);

Creates a new GtkButton widget. To add a child widget to the button, use `gtk_container_add()`.

#### Returns

The newly created GtkButton widget.

### gtk_button_new_with_label ()

    GtkWidget *
    gtk_button_new_with_label (const gchar *label);

Creates a GtkButton widget with a GtkLabel child containing the given text.

#### Parameters

label | The text you want the GtkLabel to hold. |

#### Returns

The newly created GtkButton widget.

### gtk_button_new_with_mnemonic ()

    GtkWidget *
    gtk_button_new_with_mnemonic (const gchar *label);

Creates a new GtkButton containing a label. If characters in `label` are preceded by an underscore, they are underlined. If you need a literal underscore character in a label, use '__' (two underscores). The first underlined character represents a keyboard accelerator called a mnemonic. Pressing Alt and that key activates the button.

#### Parameters

label | The text of the button, with an underscore in front of the mnemonic character |

#### Returns

a new GtkButton

### gtk_button_new_from_stock ()

    GtkWidget *
    gtk_button_new_from_stock (const gchar *stock_id);

Creates a new GtkButton containing the image and text from a stock item. Some stock ids have preprocessor macros like GTK_STOCK_OK and GTK_STOCK_APPLY.

If `stock_id` is unknown, then it will be treated as a mnemonic label (as for `gtk_button_new_with_mnemonic()`).

#### Parameters

stock_id | the name of the stock item |

#### Returns

a new GtkButton

### gtk_button_pressed ()

    void
    gtk_button_pressed (GtkButton *button);

`gtk_button_pressed` has been deprecated since version 2.20 and should not be used in newly-written code.

Use the “button-press-event” signal.

Emits a “pressed” signal to the given GtkButton.

#### Parameters

button | The GtkButton you want to send the signal to. |

### gtk_button_released ()

    void
    gtk_button_released (GtkButton *button);

`gtk_button_released` has been deprecated since version 2.20 and should not be used in newly-written code.

Use the “button-release-event” signal.

Emits a “released” signal to the given GtkButton.

#### Parameters

button | The GtkButton you want to send the signal to. |

### gtk_button_clicked ()

    void
    gtk_button_clicked (GtkButton *button);

Emits a “clicked” signal to the given GtkButton.

#### Parameters

button | The GtkButton you want to send the signal to. |

### gtk_button_enter ()

    void
    gtk_button_enter (GtkButton *button);

`gtk_button_enter` has been deprecated since version 2.20 and should not be used in newly-written code.

Use the “enter-notify-event” signal.

Emits a “enter” signal to the given GtkButton.

#### Parameters

button | The GtkButton you want to send the signal to. |

### gtk_button_leave ()

    void
    gtk_button_leave (GtkButton *button);

`gtk_button_leave` has been deprecated since version 2.20 and should not be used in newly-written code.

Use the “leave-notify-event” signal.

Emits a “leave” signal to the given GtkButton.

#### Parameters

button | The GtkButton you want to send the signal to. |

### gtk_button_set_relief ()

    void
    gtk_button_set_relief (GtkButton *button,
                           GtkReliefStyle newstyle);

Sets the relief style of the edges of the given GtkButton widget. Three styles exist, GTK_RELIEF_NORMAL, GTK_RELIEF_HALF, GTK_RELIEF_NONE. The default style is, as one can guess, GTK_RELIEF_NORMAL.

#### Parameters

button | The GtkButton you want to set relief styles of. |
newstyle | The GtkReliefStyle as described above. |

### gtk_button_get_relief ()

    GtkReliefStyle
    gtk_button_get_relief (GtkButton *button);

Returns the current relief style of the given GtkButton.

#### Parameters

button | The GtkButton you want the GtkReliefStyle from. |

#### Returns

The current GtkReliefStyle

### gtk_button_get_label ()

    const gchar *
    gtk_button_get_label (GtkButton *button);

Fetches the text from the label of the button, as set by `gtk_button_set_label()`. If the label text has not been set the return value will be `NULL`. This will be the case if you create an empty button with `gtk_button_new()` to use as a container.

#### Parameters

button | a GtkButton |

#### Returns

The text of the label widget. This string is owned by the widget and must not be modified or freed.

### gtk_button_set_label ()

    void
    gtk_button_set_label (GtkButton *button,
                          const gchar *label);

Sets the text of the label of the button to `str` . This text is also used to select the stock item if `gtk_button_set_use_stock()` is used.

This will also clear any previously set labels.

#### Parameters

button | a GtkButton |
label | a string |

### gtk_button_get_use_stock ()

    gboolean
    gtk_button_get_use_stock (GtkButton *button);

Returns whether the button label is a stock item.

#### Parameters

button | a GtkButton |

#### Returns

`TRUE` if the button label is used to select a stock item instead of being used directly as the label text.

### gtk_button_set_use_stock ()

    void
    gtk_button_set_use_stock (GtkButton *button,
                              gboolean use_stock);

If `TRUE`, the label set on the button is used as a stock id to select the stock item for the button.

#### Parameters

button | a GtkButton |
use_stock | `TRUE` if the button should use a stock item |

### gtk_button_get_use_underline ()

    gboolean
    gtk_button_get_use_underline (GtkButton *button);

Returns whether an embedded underline in the button label indicates a mnemonic. See `gtk_button_set_use_underline()`.

#### Parameters

button | a GtkButton |

#### Returns

`TRUE` if an embedded underline in the button label indicates the mnemonic accelerator keys.

### gtk_button_set_use_underline ()

    void
    gtk_button_set_use_underline (GtkButton *button,
                                  gboolean use_underline);

If true, an underline in the text of the button label indicates the next character should be used for the mnemonic accelerator key.

#### Parameters

button | a GtkButton |
use_underline | `TRUE` if underlines in the text indicate mnemonics |

### gtk_button_set_focus_on_click ()

    void
    gtk_button_set_focus_on_click (GtkButton *button,
                                   gboolean focus_on_click);

Sets whether the button will grab focus when it is clicked with the mouse. Making mouse clicks not grab focus is useful in places like toolbars where you don't want the keyboard focus removed from the main area of the application.

#### Parameters

button | a GtkButton |
focus_on_click | whether the button grabs focus when clicked with the mouse |

Since 2.4

### gtk_button_get_focus_on_click ()

    gboolean
    gtk_button_get_focus_on_click (GtkButton *button);

Returns whether the button grabs focus when it is clicked with the mouse. See `gtk_button_set_focus_on_click()`.

#### Parameters

button | a GtkButton |

#### Returns

`TRUE` if the button grabs focus when it is clicked with the mouse.

Since 2.4

### gtk_button_set_alignment ()

    void
    gtk_button_set_alignment (GtkButton *button,
                              gfloat xalign,
                              gfloat yalign);

Sets the alignment of the child. This property has no effect unless the child is a GtkMisc or a GtkAligment.

#### Parameters

button | a GtkButton |
xalign | the horizontal position of the child, 0.0 is left aligned, 1.0 is right aligned |
yalign | the vertical position of the child, 0.0 is top aligned, 1.0 is bottom aligned |

Since 2.4

### gtk_button_get_alignment ()

    void
    gtk_button_get_alignment (GtkButton *button,
                              gfloat *xalign,
                              gfloat *yalign);

Gets the alignment of the child in the button.

#### Parameters

button | a GtkButton |
xalign | return location for horizontal alignment. | [out]
yalign | return location for vertical alignment. | [out]

Since 2.4

### gtk_button_set_image ()

    void
    gtk_button_set_image (GtkButton *button,
                          GtkWidget *image);

Set the image of `button` to the given widget. Note that it depends on the “gtk-button-images” setting whether the image will be displayed or not, you don't have to call `gtk_widget_show()` on `image` yourself.

#### Parameters

button | a GtkButton |
image | a widget to set as the image for the button |

Since 2.6

### gtk_button_get_image ()

    GtkWidget *
    gtk_button_get_image (GtkButton *button);

Gets the widget that is currenty set as the image of `button` . This may have been explicitly set by `gtk_button_set_image()` or constructed by `gtk_button_new_from_stock()`.

#### Parameters

button | a GtkButton |

#### Returns

a GtkWidget or `NULL` in case there is no image.

[transfer none]

Since 2.6

### gtk_button_set_image_position ()

    void
    gtk_button_set_image_position (GtkButton *button,
                                   GtkPositionType position);

Sets the position of the image relative to the text inside the button.

#### Parameters

button | a GtkButton |
position | the position |

Since 2.10

### gtk_button_get_image_position ()

    GtkPositionType
    gtk_button_get_image_position (GtkButton *button);

Gets the position of the image relative to the text inside the button.

#### Parameters

button | a GtkButton |

#### Returns

the position

Since 2.10

### gtk_button_get_event_window ()

    GdkWindow *
    gtk_button_get_event_window (GtkButton *button);

Returns the button's event window if it is realized, `NULL` otherwise. This function should be rarely needed.

#### Parameters

button | a GtkButton |

#### Returns

`button` 's event window.

[transfer none]

Since 2.22

## Types and Values

### struct GtkButton

    struct GtkButton;

This should not be accessed directly. Use the accessor functions below.

## Property Details

### The `“focus-on-click”` property

      “focus-on-click”           gboolean

Whether the button grabs focus when it is clicked with the mouse.

Flags: Read / Write

Default value: TRUE

### The `“image”` property

      “image”                    GtkWidget *

Child widget to appear next to the button text.

Flags: Read / Write

### The `“image-position”` property

      “image-position”           GtkPositionType

The position of the image relative to the text inside the button.

Flags: Read / Write

Default value: GTK_POS_LEFT

Since 2.10

### The `“label”` property

      “label”                    gchar *

Text of the label widget inside the button, if the button contains a label widget.

Flags: Read / Write / Construct

Default value: NULL

### The `“relief”` property

      “relief”                   GtkReliefStyle

The border relief style.

Flags: Read / Write

Default value: GTK_RELIEF_NORMAL

### The `“use-stock”` property

      “use-stock”                gboolean

If set, the label is used to pick a stock item instead of being displayed.

Flags: Read / Write / Construct

Default value: FALSE

### The `“use-underline”` property

      “use-underline”            gboolean

If set, an underline in the text indicates the next character should be used for the mnemonic accelerator key.

Flags: Read / Write / Construct

Default value: FALSE

### The `“xalign”` property

      “xalign”                   gfloat

If the child of the button is a GtkMisc or GtkAlignment, this property can be used to control it's horizontal alignment. 0.0 is left aligned, 1.0 is right aligned.

Flags: Read / Write

Allowed values: [0,1]

Default value: 0.5

Since 2.4

### The `“yalign”` property

      “yalign”                   gfloat

If the child of the button is a GtkMisc or GtkAlignment, this property can be used to control it's vertical alignment. 0.0 is top aligned, 1.0 is bottom aligned.

Flags: Read / Write

Allowed values: [0,1]

Default value: 0.5

Since 2.4

## Style Property Details

### The `“child-displacement-x”` style property

      “child-displacement-x”     gint

How far in the x direction to move the child when the button is depressed.

Flags: Read

Default value: 0

### The `“child-displacement-y”` style property

      “child-displacement-y”     gint

How far in the y direction to move the child when the button is depressed.

Flags: Read

Default value: 0

### The `“default-border”` style property

      “default-border”           GtkBorder *

The "default-border" style property defines the extra space to add around a button that can become the default widget of its window. For more information about default widgets, see `gtk_widget_grab_default()`.

Flags: Read

### The `“default-outside-border”` style property

      “default-outside-border”   GtkBorder *

The "default-outside-border" style property defines the extra outside space to add around a button that can become the default widget of its window. Extra outside space is always drawn outside the button border. For more information about default widgets, see `gtk_widget_grab_default()`.

Flags: Read

### The `“displace-focus”` style property

      “displace-focus”           gboolean

Whether the child_displacement_x/child_displacement_y properties should also affect the focus rectangle.

Flags: Read

Default value: FALSE

Since 2.6

### The `“image-spacing”` style property

      “image-spacing”            gint

Spacing in pixels between the image and label.

Flags: Read

Allowed values: >= 0

Default value: 2

### The `“inner-border”` style property

      “inner-border”             GtkBorder *

Sets the border between the button edges and child.

Flags: Read

Since 2.10

## Signal Details

### The `“activate”` signal

    void
    user_function (GtkButton *widget,
                   gpointer   user_data)

The ::activate signal on GtkButton is an action signal and emitting it causes the button to animate press then release. Applications should never connect to this signal, but use the “clicked” signal.

#### Parameters

widget | the object which received the signal. |
user_data | user data set when the signal handler was connected. |

Flags: Action

### The `“clicked”` signal

    void
    user_function (GtkButton *button,
                   gpointer   user_data)

Emitted when the button has been activated (pressed and released).

#### Parameters

button | the object that received the signal |
user_data | user data set when the signal handler was connected. |

Flags: Action

### The `“enter”` signal

    void
    user_function (GtkButton *button,
                   gpointer   user_data)

Emitted when the pointer enters the button.

`GtkButton::enter` has been deprecated since version 2.8 and should not be used in newly-written code.

Use the “enter-notify-event” signal.

#### Parameters

button | the object that received the signal |
user_data | user data set when the signal handler was connected. |

Flags: Run First

### The `“leave”` signal

    void
    user_function (GtkButton *button,
                   gpointer   user_data)

Emitted when the pointer leaves the button.

`GtkButton::leave` has been deprecated since version 2.8 and should not be used in newly-written code.

Use the “leave-notify-event” signal.

#### Parameters

button | the object that received the signal |
user_data | user data set when the signal handler was connected. |

Flags: Run First

### The `“pressed”` signal

    void
    user_function (GtkButton *button,
                   gpointer   user_data)

Emitted when the button is pressed.

`GtkButton::pressed` has been deprecated since version 2.8 and should not be used in newly-written code.

Use the “button-press-event” signal.

#### Parameters

button | the object that received the signal |
user_data | user data set when the signal handler was connected. |

Flags: Run First

### The `“released”` signal

    void
    user_function (GtkButton *button,
                   gpointer   user_data)

Emitted when the button is released.

`GtkButton::released` has been deprecated since version 2.8 and should not be used in newly-written code.

Use the “button-release-event” signal.

#### Parameters

button | the object that received the signal |
user_data | user data set when the signal handler was connected. |

Flags: Run First