+----Fl_Browser_, Fl_Color_Chooser, Fl_Help_View, Fl_Input_Choice, Fl_Pack,
Fl_Scroll, Fl_Tabs, Fl_Spinner, Fl_Tabs, Fl_Text_Display, Fl_Tile,
The Fl_Group class is the FLTK container widget. It maintains
an array of child widgets. These children can themselves be any widget
including Fl_Group. The most important subclass of Fl_Group
is Fl_Window, however
groups can also be used to control radio buttons or to enforce resize
Creates a new Fl_Group widget using the given position, size,
and label string. The default boxtype is FL_NO_BOX.
The destructor also deletes all the children. This allows a
whole tree to be deleted at once, without having to keep a pointer to
all the children in the user code. A kludge has been done so the
Fl_Group and all of it's children can be automatic (local)
variables, but you must declare the Fl_Group first, so
that it is destroyed last.
The widget is removed from it's current group (if any) and then added
to the end of this group.
The clear() method deletes all child widgets from
This method differs from the remove() method in that it
affects all child widgets and deletes them from memory.
The first method controls whether the group widget clips the drawing of
child widgets to its bounding box.
The second method returns the current clipping mode.
The default is to not clip (0) the drawing of child widgets.
The Fl_Group widget keeps track of the original widget sizes and
positions when resizing occurs so that if you resize a window back to its
original size the widgets will be in the correct places. If you rearrange
the widgets in your group, call this method to register the new arrangement
with the Fl_Group that contains them.
The widget is removed from it's current group (if any) and then
inserted into this group. It is put at index n (or at the end
if n >= children(). This can also be used to rearrange
the widgets inside a group.
void Fl_Group::insert(Fl_Widget &w, Fl_Widget* beforethis)
This does insert(w, find(beforethis)). This will append the
widget if beforethis is not in the group.
Removes a widget from the group but does not delete it. This
method does nothing if the widget is not a child of the
This method differs from the clear() method in that it
only affects a single widget and does not delete it from
current() returns the currently active group. The Fl_Widget
constructor automatically does current()->add(widget) if this is not null.
To prevent new widgets from being added to a group, call Fl_Group::current(0).
begin() sets the current group so you can build the widget
tree by just constructing the widgets. begin() is
automatically called by the constructor for Fl_Group (and thus for
Fl_Window as well). begin() is exactly the same as current(this).
Don't forget to end() the group or window!
end() is exactly the same as current(this->parent()). Any new widgets
added to the widget tree will be added to the parent of the group.
Returns a pointer to the array of children. This pointer is only
valid until the next time a child is added or removed.
Returns array()[n]. No range checking is done!
Returns how many child widgets the group has.
Searches the child array for the widget and returns the index. Returns children() if the widget is
NULL or not found.
The resizable widget defines the resizing box for the group. When the
group is resized it calculates a new size and position for all of its
children. Widgets that are horizontally or vertically inside the
dimensions of the box are scaled to the new size. Widgets outside the
box are moved.
In these examples the gray area is the resizable:
The resizable may be set to the group itself (this is the default
value for an Fl_Group, although NULL is the default
for Fl_Window and Fl_Pack), in which case all the
contents are resized.
If the resizable is NULL then all widgets remain a fixed size
and distance from the top-left corner.
It is possible to achieve any type of resize behavior by using an
invisible Fl_Box as the resizable and/or by using a hierarchy
of child Fl_Group's.
Adds a widget to the group and makes it the resizable widget.
From Nathan Black, 22:04 Mar 11, 2004 (score=1)
You must call this AFTER you add all your UI elements, or it will cause the controls not to respond for controls added later.
[ Reply ]
From greg.ercolano, 13:02 Nov 23, 2006 (score=3)
I think Nathan is referring to calling the init_sizes() method here.
[ Reply ]