void attach(GtkWidget child, int left_attach, int right_attach, int top_attach, int bottom_attach [, GtkAttachOptions xoptions = Gtk::EXPAND|Gtk::FILL [, GtkAttachOptions yoptions = Gtk::EXPAND|Gtk::FILL [, int xpadding = Gtk::EXPAND|Gtk::FILL [, int ypadding = Gtk::EXPAND|Gtk::FILL]]]]);

attach() is the way of adding widgets to a GtkTable. It takes up to nine arguments, but only five are required.

The first argument (child) refers to the child widget to be attached. The two following arguments ( left_attach, right_attach) denote the starting point that the child will be drawn from, at the left hand side, and the end point that the child will be drawn to, to the right. These parameters are given in terms of columns, with the start point being 0. The next two arguments (top_attach, bottom_attach) do the same thing, the only difference beeing that they relate to rows instead of columns, controlling the vertical positioning.

As with all container widgets, the GtkTable itself takes up no screen space until it contains child widgets. If you attach only one child with parameters that should set it in the bottom right corner and set homogeneous to false, the resulting effect will not be that of a table with only one entry in the bottom right corner, but of a container with a single widget in it - regardless of the number of columns and rows specified in the table's constructor. Child settings always take precedence in a non-homogeneous table, and so all table attachments are relative to the other child widgets. This is in line with the behaviour of other multiple-child capable containers where the child widget can have its own packing parameters set.

The behaviour is very different when a regular grid is in position, which happens when the GtkTable has its homogeneous parameter set to true. The table works out the dimensions of the grid from the the largest child widget's size request, and positions its children accordingly.

The final four optional parameters determine the way in which the child widget will respond to the area available to it (expand, shrink, fill) in each direction, and the padding between the child and its nearest border, in each direction.

See the constructor entry for an usage example.