debug_mode=ON

Buscar en

 
 

GTK+: Contenedores

Escrito por Fran hace 1 años bajo Dominio Público
992 visitas. Etiquetas: gtk, c, gnome, linux

Esta es una de las características que pueden hacer algo diferente a GTK+ respecto a otras bibliotecas de interfaces gráficas, los contenedores. Mientras que en otras bibliotecas de interfaces gráficas los widgets se colocan mediante coordenadas, en GTK+ se colocan usando otros contenedores que crean la distribución de la aplicación y contienen a los widgets que realizan acciones como botones, cajas de texto, ...

Los contenedores

Una aplicación GTK+ viene definida por un widget de una ventana en el cual se colocan los otros widgets (entradas de texto, etiquetas, botones, ...) para formar una interfaz gráfica de usuario. La peculiaridad de GTK+ es cómo se colocan dichos widgets, para ello se hacen uso de otros widgets llamados contenedores, éstos sirven para (como su propio nombre indica) contener otros widgets, de modo que para distribuir los widgets por la ventana primero deberemos colocar algún contenedor sobre el cual insertar dichos widgets.

Hay varios widgets básicos de contenedores:

  • GtkHBox: Es un contenedor horizontal, quiere decir que los widgets se colocan horizontalmente.
  • GtkVBox: Es un contenedor vertical, quiere decir que los widgets se colocan verticalmente.
  • GtkTable: Crea una tabla de MxN contenedores, los widgets se colocan en la posición AxB que queramos dentro de nuestra tabla MxN. Este se diferencia del resto en las funciones usadas para colocar los widgets, usará las suyas propias en lugar de las de GtkBox que explicaré a continuación.

Como podéis ver os enlazo a la documentación de la API de GTK+ para cada widget, para mí es el mejor recurso de documentación.

Los widgets GtkHBox y GtkVBox, como podéis ver en la API, sólo tienen una función asociada:

GtkWidget *gtk_hbox_new (gboolean homogeneous, gint spacing);

Esta función sirve para crear un GtkHBox (para GtkVBox habría que cambiar hbox por vbox en el nombre de la función). Recibe dos parámetros que sirven para que los widgets se distribuyan en tamaños iguales (homogeneous) y para definir los pixeles por defecto entre widgets (spacing).

Hay que entender que para que estos widgets ejerzan de contenedores hay que usar las funciones de GtkBox, que es algo así como una interfaz que define operaciones para sus hijos, entre ellos los anteriores widgets. De GtkBox, las funciones más importantes son:

gtk_box_pack_start (GtkBox *box, GtkWidget *child, gboolean expand,
                    gboolean fill, guint padding);

Esta función sirve para colocar widgets de izquierda a derecha (en cualquier GtkHBox) o de arriba a abajo (en cualquier GtkVBox).

gtk_box_pack_end (GtkBox *box, GtkWidget *child, gboolean expand,
                  gboolean fill, guint padding);

Esta función sirve para colocar widgets al revés que la anterior.

Los parámetros de cada una de estas funciones son:

  • box: Es el contenedor en el que se va a colocar el widget pasado como parámetro child.
  • child: El widget que queremos colocar en box.
  • expand y fill: Estos parámetros no sabría explicarlos bien, ya que lo mejor es ver el resultado de modificar cada uno. En el ejemplo que dejaré al final podréis comprenderlo mejor.
  • padding: Este es fácil para cualquiera que haya hecho una web, es el espacio (en pixeles) que se dejará entre el widget y los vecinos de éste, o el borde del contenedor si es el primero o el último.

También existen otras dos funciones que nos ahorran trabajo si queremos dejar los parámetros predeterminados de los contenedores, éstas son:

gtk_box_pack_start_defaults (GtkBox *box, GtkWidget *widget);

Esta función sirve para colocar widgets de izquierda a derecha (en cualquier GtkHBox) o de arriba a abajo (en cualquier GtkVBox).

gtk_box_pack_end (GtkBox *box, GtkWidget *widget);

Esta función sirve para colocar widgets al revés que la anterior.

Para que podáis entender esto mejor os dejo este ejemplo, que es el que viene en el tutorial oficial de GTK+.


Publicado inicialmente (sin algunos cambios que he realizado aquí) en 4 bits.

 

¡Votalo! 2 votos
¡Compártelo!

        

&nbps;

&nbps;

Fran

Sobre Fran

Este usuario no ha completado su perfil.

 
Regístrate o haz login para participar.
¿Todavía no conoces debugmodeon?
debugmodeon es la red social para profesionales de la informática
descubre debugmodeon
 

 

© Copyright 2008-2009 debug_mode=ON | Aviso legal | Contacto | FAQ | ¿Quiénes somos? |