Ejemplo simple

Para iniciar nuestra introducción a gtkmm, vamos a empezar con el programa más simple posible. Este programa va a crear una ventana vacía de 200 x 200 píxeles.

Código fuente

File: base.cc (For use with gtkmm 3, not gtkmm 2)

#include <gtkmm.h>

int main(int argc, char *argv[])
{
  Glib::RefPtr<Gtk::Application> app =
    Gtk::Application::create(argc, argv,
      "org.gtkmm.examples.base");

  Gtk::ApplicationWindow window;

  return app->run(window);
}

Ahora se explicará cada línea del ejemplo

#include <gtkmm.h>

Todos los programas gtkmm deben incluir ciertas cabeceras gtkmm: gtkmm.h incluye el kit completo de gtkmm. Esto no suele ser una buena idea, ya que incluye casi un megabyte de cabeceras, pero para programas sencillos, basta.

La siguiente línea:

Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.examples.base");
crea un objeto Gtk::Application, almacenado en un puntero inteligente RefPtr. Esto es necesario en todas las aplicaciones gtkmm. El método «create()» de este objeto inicializa gtkmm y verifica los argumentos pasados a su aplicación en la línea de comandos, buscando opciones estándar tales como -display. Toma estos argumentos de la lista, dejándole cualquier cosa que no reconozca para que su aplicación la procese o la ignore. Esto asegura que todas las aplicaciones gtkmm acepten el mismo conjunto de argumentos estándar.

Las dos siguientes líneas de código crean y muestran una ventana:

Gtk::Window window;

La última línea muestra la ventana y entra al bucle principal de gtkmm, que terminará cuando la ventana se cierre. Su función «main()» entonces retornará con un éxito apropiado o un código de error.

return app->run(window);

Después de poner el código fuente en simple.cc puede compilar el programa anterior con gcc usando:

g++ simple.cc -o simple `pkg-config gtkmm-3.0 --cflags --libs`
Tenga en cuenta que debe poner la invocación pkg-config entre apóstrofes. Los apóstrofes permite a la shell ejecutar el comando dentro de ellos, y utilizar la salida de comando como parte de la línea de comando.