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.

Los widgets se ordenan dentro de widgets contenedores como marcos y cuardenos de notas, en una jerarquía de widgets dentro de widgets. Algunos de estos widgets contenedores, como Gtk::Grid no son visibles: sólo existen para ordenar otros widgets. Aquí hay un código de ejemplo que añade dos widgets Gtk::Button a un widget contenedor Gtk::Box:

m_box.pack_start(m_Button1);
m_box.pack_start(m_Button2);
y aquí se muestra cómo agregar el Gtk::Box, conteniendo esos botones, a un Gtk::Frame, que tiene un cuadro y título visibles:
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.