Manual
logo



Programación C++ con AGU desde 0

Creación del Proyecto GTK Básico

Proyecto Genérico c++ con paquetes externos 

Una segunda forma de realizar el proyecto GTKmm básico, es partiendo de un proyecto C++ Genérico, pero incluyendo la opciónconfigurar paquetes externos.

Nos aparecerá una ventana adicional para introducir el nombre del paquete:

No importa mucho, que en ese momento no nos acordemos del nombre de la librería, lo importante es que Anjuta va a configurar el proyecto para que al incluir las librerías necesarias, no obtengamos errores.

Al autogenerar, nos dará un problema (A en el gráfico): no encuentra nuestra librería "noimportamucho".
Entonces accedemos a la ventana propiedades del Proyecto [Proyecto->Propiedades], y en la pestaña paquetes podremos quitar "noimportamucho" y añadir el paquete correcto [gtkmm-2.4]. Al pulsar añadir paquete encontramos todos los paquetes disponibles, y la certeza de incluir la versión correcta.
Una vez realizado esto al autogenerar no habrá problemas.


Vamos a reeditar el archivo main.cc con el siguiente código: // Incluir la libreria gtkmm.h 
#include <gtkmm.h> 

// Incluir la librería que nos permite usar GString
#include <glib.h>




int main(int argc, char *argv[])

    GString * mensaje; //declaración de la cadena mensaje
    mensaje = g_string_new( "Hola "); // primera asignación a la cadena mensaje
    if (argc>1)
    {
        g_string_append(mensaje, argv[1]); //si existe un argumento añade a Hola, el primer argumento.
    }else{
        g_string_append (mensaje, "DESCONOCIDO");// si no hay argumentos el mensaje es Hola DESCONOCIDO
    }
  
  
    Gtk::Main programa(argc, argv); // Crear un objeto Main de Gtk, obligatorio en todo proyecto GTKmm
    Gtk::Window miventanica;// Crear un objeto Window de Gtk -la ventanica -
  
    miventanica.set_title(mensaje->str);// establece el título
    programa.run(miventanica);// Echar a correr nuestra ventana
  
    return 0;
}




Al ejecutarlo la salida es igualmente una ventanica (200*200), donde hemos modificado el título de la ventana.

Explicación código

Cuando nosotros escribimos en un terminal: nombre_programa -p 12 -q 4
El sistema ejecuta la función main con la variable argc, de tipo entero, indicando el número de argumentos ( 5 en nuestro caso).  Y cada uno de estos argumentos va como cadenas de caracteres (aunque se traten de números). Así,
argv[0]= "/directorio/nombre_programa"
argv[1]= "-p"
argv[2]= "12"
argv[3]= "-q"
argv[4]="4"

#include <glib.h>
GString * mensaje;
C++, no incluye "de serie" el tipo cadena (string) [no podía ser perfecto], así que para manipularlas de forma fácil (sin preocuparnos por la gestión de memoria) he declarado un objeto GString, definido en glib.h. Exactamente, declaramos un puntero a un objeto, pero de las variables puntero hablaremos con mayor extensión en apartados posteriores.

mensaje = g_string_new( "Hola ");
if (argc>1)
    {
        g_string_append(mensaje, argv[1]);
    }else{
        g_string_append (mensaje, "DESCONOCIDO");
    }
  
Inicializamos el objeto GString con la cadena Hola y, posteriormente, en función de si existen o no existen argumentos, añadimos el primer argumento a la cadena anterior o, en el caso que no existan argumentos "DESCONOCIDO", de tal suerte que si al ejecutarlo como parámetros añadimos Pablo, la cadena resultante será Hola Pablo y si no existen parámetros será Hola DESCONOCIDO

miventanica.set_title (mensaje->str);
Entre la declaración del objeto Window (Gtk::Window miventanica;) y el lanzamiento de la aplicación Gtk::Main, hemos incluido el código que configura nuestro interfazEn este caso solo una línea de código que modifica el título de la ventana.
Esta función, set_title, recibe como argumento una cadena de caracteres.