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.pack_start(m_Button1);
m_box.pack_start(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.add(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.

A pesar de que las instancias de widgets gtkmm tienen ámbito y duración de la misma manera que otras clases de C++, gtkmm tiene una característica opcional para ahorrar tiempo que verá en algunos de los ejemplos. Gtk::manage() le permite decir que un widget hijo es propiedad del contenedor en el que lo ubica. Esto le permite utilizar new en el widget, añadirlo al contenedor, y olvidarse de eliminarlo. Puede aprender más de las técnicas de gestión de memoria de gtkmm en el capítulo de gestión de memoria.