## GtkFrame GtkFrame — A widget with a decorative frame and optional label |

## Functions

GtkWidget * | gtk_frame_new ()
void | gtk_frame_set_child ()
GtkWidget * | gtk_frame_get_child ()
void | gtk_frame_set_label ()
const gchar * | gtk_frame_get_label ()
void | gtk_frame_set_label_widget ()
GtkWidget * | gtk_frame_get_label_widget ()
void | gtk_frame_set_label_align ()
gfloat | gtk_frame_get_label_align ()

## Properties

GtkWidget * | child | Read / Write
gchar * | label | Read / Write
GtkWidget * | label-widget | Read / Write
gfloat | label-xalign | Read / Write

## Types and Values

struct | GtkFrame
struct | GtkFrameClass

## Object Hierarchy

        GObject
        ╰── GInitiallyUnowned
            ╰── GtkWidget
                ╰── GtkFrame

## Implemented Interfaces

GtkFrame implements AtkImplementorIface, GtkBuildable and GtkConstraintTarget.

## Includes

    #include <gtk/gtk.h>

## Description

The frame widget is a widget that surrounds its child with a decorative frame and an optional label. If present, the label is drawn inside the top edge of the frame. The horizontal position of the label can be controlled with `gtk_frame_set_label_align()`.

### GtkFrame as GtkBuildable

The GtkFrame implementation of the GtkBuildable interface supports placing a child in the label position by specifying “label” as the “type” attribute of a <child> element. A normal content child can be specified without specifying a <child> type attribute.

An example of a UI definition fragment with GtkFrame:

    1
    2
    3
    4
    5
    6
    7
    8
    <object class="GtkFrame">
      <child type="label">
        <object class="GtkLabel" id="frame_label"/>
      </child>
      <child>
        <object class="GtkEntry" id="frame_content"/>
      </child>
    </object>

### CSS nodes

    1
    2
    3
    frame
    ├── <label widget>
    ╰── <child>

GtkFrame has a main CSS node with name “frame”, which is used to draw the visible border. You can set the appearance of the border using CSS properties like “border-style” on this node.

## Functions

### gtk_frame_new ()

    GtkWidget *
    gtk_frame_new (const gchar *label);

Creates a new GtkFrame, with optional label `label` . If `label` is `NULL`, the label is omitted.

#### Parameters

label | the text to use as the label of the frame. | [allow-none]

#### Returns

a new GtkFrame widget

### gtk_frame_set_child ()

    void
    gtk_frame_set_child (GtkFrame *frame,
                         GtkWidget *child);

Sets the child widget of `frame` .

#### Parameters

frame | a GtkFrame |
child | the child widget. | [allow-none]

### gtk_frame_get_child ()

    GtkWidget *
    gtk_frame_get_child (GtkFrame *frame);

Gets the child widget of `frame` .

#### Parameters

frame | a GtkFrame |

#### Returns

the child widget of `frame` .

[nullable][transfer none]

### gtk_frame_set_label ()

    void
    gtk_frame_set_label (GtkFrame *frame,
                         const gchar *label);

Removes the current “label-widget”. If `label` is not `NULL`, creates a new GtkLabel with that text and adds it as the “label-widget”.

#### Parameters

frame | a GtkFrame |
label | the text to use as the label of the frame. | [allow-none]

### gtk_frame_get_label ()

    const gchar *
    gtk_frame_get_label (GtkFrame *frame);

If the frame’s label widget is a GtkLabel, returns the text in the label widget. (The frame will have a GtkLabel for the label widget if a non-`NULL` argument was passed to `gtk_frame_new()`.)

#### Parameters

frame | a GtkFrame |

#### Returns

the text in the label, or `NULL` if there was no label widget or the lable widget was not a GtkLabel. This string is owned by GTK+ and must not be modified or freed.

[nullable]

### gtk_frame_set_label_widget ()

    void
    gtk_frame_set_label_widget (GtkFrame *frame,
                                GtkWidget *label_widget);

Sets the “label-widget” for the frame. This is the widget that will appear embedded in the top edge of the frame as a title.

#### Parameters

frame | a GtkFrame |
label_widget | the new label widget. | [nullable]

### gtk_frame_get_label_widget ()

    GtkWidget *
    gtk_frame_get_label_widget (GtkFrame *frame);

Retrieves the label widget for the frame. See `gtk_frame_set_label_widget()`.

#### Parameters

frame | a GtkFrame |

#### Returns

the label widget, or `NULL` if there is none.

[nullable][transfer none]

### gtk_frame_set_label_align ()

    void
    gtk_frame_set_label_align (GtkFrame *frame,
                               gfloat xalign);

Sets the X alignment of the frame widget’s label. The default value for a newly created frame is 0.0.

#### Parameters

frame | a GtkFrame |
xalign | The position of the label along the top edge of the widget. A value of 0.0 represents left alignment; 1.0 represents right alignment. |

### gtk_frame_get_label_align ()

    gfloat
    gtk_frame_get_label_align (GtkFrame *frame);

Retrieves the X alignment of the frame’s label. See `gtk_frame_set_label_align()`.

#### Parameters

frame | a GtkFrame |

## Types and Values

### struct GtkFrame

    struct GtkFrame;

### struct GtkFrameClass

    struct GtkFrameClass {
      GtkWidgetClass parent_class;

      void (*compute_child_allocation) (GtkFrame *frame,
                                        GtkAllocation *allocation);
    };

#### Members

`compute_child_allocation` () |  |

## Property Details

### The `“child”` property

      “child”                    GtkWidget *

The child widget.

Owner: GtkFrame

Flags: Read / Write

### The `“label”` property

      “label”                    gchar *

Text of the frame’s label.

Owner: GtkFrame

Flags: Read / Write

Default value: NULL

### The `“label-widget”` property

      “label-widget”             GtkWidget *

A widget to display in place of the usual frame label.

Owner: GtkFrame

Flags: Read / Write

### The `“label-xalign”` property

      “label-xalign”             gfloat

The horizontal alignment of the label.

Owner: GtkFrame

Flags: Read / Write

Allowed values: [0,1]

Default value: 0