Widgets

Las aplicaciones gtkmm están compuestas por ventanas, estas a su vez contienen widgets, tales como botones y cuadros de texto. En algunos otros sistemas, los widgets se llaman «controles». Hay un objeto C++ en el código de la aplicación para cada widget contenido en las ventanas de una aplicación. Sólo debe llamar a un método de la clase widget para afectar al widget visible.

Widgets are arranged inside container widgets such as frames and notebooks, in a hierarchy of widgets within widgets. Some of these container widgets, such as Gtk::Grid, are not visible - they exist only to arrange other widgets. Here is some example code that adds 2 Gtk::Button widgets to a Gtk::Box container widget:

m_box.append(m_Button1);
m_box.append(m_Button2);
and here is how to add the Gtk::Box, containing those buttons, to a Gtk::Frame, which has a visible frame and title:
m_frame.set_child(m_box);

La mayoría de los capítulos de este libro tratan de widgets específicos. Consulte la sección Widgets contenedores para obtener más detalles sobre de cómo agregar widgets a widgets contenedores.

Aunque se puede especificar el diseño y apariencia de las ventanas y widgets con código C++, es probable que resulte más conveniente usar Glade para el diseño de la interfaz de usuario y cargarlos en tiempo de ejecución con Gtk::Builder. Consulte el capítulo Glade y Gtk::Builder.

Although gtkmm widget instances have lifetimes and scopes just like those of other C++ classes, gtkmm has an optional time-saving feature that you will see in some of the examples. The Gtk::make_managed() allows you to create a new widget and state that it will become owned by the container into which you place it. This allows you to create the widget, add it to the container and not be concerned about deleting it, since that will occur when the parent container (which may itself be managed) is deleted. You can learn more about gtkmm memory management techniques in the Memory Management chapter.