next up previous contents
suivant: Les fenêtres monter: Les conteneurs de bases précédent: Les boîtes de boutons   Table des matières


Sous-sections

 Les tables

Découvrons une autre manière de ranger : les tables. Elles peuvent être extrêmement utiles dans certaines situations. Utiliser des tables consiste à créer une grille dans laquelle nous plaçons les widgets. Les widgets peuvent prendre autant de cases que nous le souhaitons.

Créer un table

Tout d'abord, la fonction qui permet de créer un table :

Le premier argument est le nombre de lignes et le second, évidemment le nombre de colonnes. L'argument $homogeneous sert à déterminer la manière dont les cases de la table sont dimensionnées. Si $homogeneous est une valeur vraie, les cases sont dimensionnées en fonction de la plus grande ? Si $homogeneous est une valeur fausse, la taille de la case est dictée par le plus petit widget de la ligne et le plus large de la colonne.

Les colonnes et les lignes sont disposées de 0 à n ou n est le nombre spécifié à l'appel new Gtk::Table(). Ainsi si vous spécifiez lignes (rows)= 3 et colonnes=2, la disposition ressemblera à ceci :

Remarquez que l'origine du repère est en haut à gauche.

Lier les widgets à la table

Pour placer un widget dans une case, on utilise :

Sur la gauche de l'appel de fonction, la table que vous avez créée et le premier argument est le widget que vous souhaitez placer dans la table.

Les arguments right_attach et left_attach déterminent où placer le widget et combien de cases utiliser. Si vous voulez un bouton dans la case droite du bas de notre table $2 \times 2$ et voulez remplir cette entrée uniquement, alors :

Maintenant si vous voulez qu'un widget occupe toute la ligne supérieure de notre table, vous devrez définir :

$xoptions et $yoptions servent à spécifier les options de rangements et peuvent être combinées pour permettre multiples options. Ces options sont :

'fill' si la case est plus grande que le widget et que 'fill' est spécifié, le widget s'étendra pour remplir tout l'espace vide.

'shrink' : si on a alloué moins d'espace que requis pour le widget (habituellement quand l'utilisateur redimensionne la fenêtre) alors le widget devrait normalement dépasser du fond de la fenêtre et ne plus être visible. Si 'shrink' est spécifié, les widgets seront réduits avec la table.

'expand' obligera la table à occuper tout l'espace restant dans la fenêtre.

Si vous souhaitez spécifier une de ces options, vous l'encadrez entre apostrophe comme ceci : 'option'. Mais si vous voulez combiner ces options, vous devrez les placer dans une liste anonyme comme ceci :

padding comme pour les boîtes, crée une zone claire autour du widget en pixel.

Une variation de attach() est attach_defaults() qui permet de vous dispenser des options x et y et de padding. Les options x et y par défaut sont ['fill', 'expand'] et les padding x et y valent 0.

Espacement entre lignes et colonnes

Nous avons aussi les fonctions set_row_spacing() et set_col_spacing() qui placent des espaces entre les lignes ( et les colonnes) , ou entre certaines lignes et certaines colonnes.

Notez que pour les colonnes, l'espace est placé à la droite de la colonne et pour les lignes, l'espace est placé dessous.

Vous pouvez aussi déclarer un espace consistant pour toutes les colonnes et les lignes avec :

Noter qu'avec ces appels, la dernière ligne et la dernière colonne ne reçoivent pas d'espace.

Redimensionner une table.

Si vous voulez redimensionner une table après l'avoir créée, vous pouvez utiliser :

Déclarer la propriété homogeneous

Si vous voulez changer la valeur de la propriété homogeneous sur une table existante, vous pouvez utiliser :

L'argument $homogeneous est une valeur vraie ou fausse.

Exemple

Ici, nous créons une fenêtre avec 3 boutons dans une table $2 \times 2$. Les deux premiers sont placés dans la ligne du haut. Un troisième, le bouton ``quitter'' est placé dans la ligne inférieure, occupant les deux colonnes. Cela doit ressembler à :

Table Example


next up previous contents
suivant: Les fenêtres monter: Les conteneurs de bases précédent: Les boîtes de boutons   Table des matières
LE BORGNE Patrice 2001-01-11