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


Sous-sections

Les boutons

Les boutons normaux

Créer un bouton

Il y a deux manières de créer des boutons. Vous pouvez créer un bouton vide et ajouter un enfant après, ou vous créez un bouton avec un label pour enfant. La seconde forme est fournie pour le confort d'utilisation. Les fonctions suivantes créent un bouton :

La première des fonctions ci-dessus crée un bouton vide. Les deux dernières créent un bouton avec un label. La seconde est en fait une forme raccourcie de la troisième.

Si vous créez un bouton avec un label, vous pouvez utiliser $button->child pour accéder au widget enfant. Par exemple, pour changer le texte d'un label, vous pourrez utiliser :

Si vous ne créez pas un bouton avec label, vous pouvez également prendre un widget et le placer dans le bouton. Par exemple, les trois sections de code suivantes sont équivalentes :

Les signaux des boutons

Les boutons possèdent les signaux suivants :

pressed : émis quand on presse le bouton de la souris alors que le pointeur est à l'intérieur du bouton ou quand la fonction $button->pressed() est appelée.

released : émias quand on relâche le bouton de la souris alors que le pointeur est à l'intérieur du bouton ou quand la fonction $button->released() est appelée.

clicked : émis quand le bouton de la souris est pressé puis relâché à l'intérieur du bouton ou quand la fonction $button->clicked() est appelée.

enter : émis quand le pointeur de la souris entre sur le bouton ou quand la fonction $button->enter() est appelée.

leave : émis quand le pointeur de la souris sort du bouton ou quand la fonction $button->leave() est appelée.

Styles de relief

Les styles de relief des boutons peuvent être : 'normal' , 'half' , 'none' . Il est évident que le style par défaut est : 'normal' . Pour obtenir ou déclarer le style de relief, vous devrez utiliser les fonctions suivantes ;

Exemple

Dans le programme suivant, je crée d'abord un bouton avec label auquel j'attache un gestionnaire, et plus tard, j'enlève ce bouton, le remplace par un créé sans label puis lui ajoute un label. Vous devriez être capable de comprendre à la fois ce qui concerne les boutons et ce qui concerne les signaux pour aller plus loin.

Example State 1

Example State 2

Example State 3

Example State 4

Les boutons Toggle ou interrupteurs

Les boutons toggle sont dérivés des boutons normaux et sont très similaires sauf qu'ils n'ont que deux états possibles et qui change à l'aide d'un clic. Ils peuvent être remontés et quand vous cliquez, ils redescendent. Vous recliquez et ils remontent.

Les boutons toggle servent de base aux cases à cocher et aux boutons radios, au point que ces derniers héritent de beaucoup des appels utilisés pour les boutons toggle. Nous vous indiquerons lesquels quand nous les rencontreront.

Créer un bouton toggle

Comme vous pouvez l'imaginer, cela fonctionne exactement comme pour les boutons normaux. La première crée un bouton toggle vierge et la seconde un bouton toggle avec label.

Pour retrouver l'état d'un widget toggle, incluant les boutons radios et les cases à cocher, nous utilisons une construction illustrée dans l'exemple ci-dessous. Cela teste l'état du toggle en accédant au domaine actif de la structure du widget toggle. Le signal qui nous intéresse émis par un bouton toggle ( les boutons toggle, radio et les cases à cocher) est le signal toggled. Pour contrôler l'état de ces boutons, déclarez un gestionnaire de signal pour attraper les signal toggled et accéder à la structure afin de déterminer son état. Le rappel ressemblera à

Changer l'état du bouton

Pour forcer l'état d'un bouton toggle, et ses enfants, les boutons radios et les cases à cocher, utilisez :

Passer une valeur vraie ou fausse comme argument précise s'il doit être en bas ( pressé ) ou en haut ( relâché ). Le défaut est en haut ou faux.

Notez que si vous utilisez la fonction set_active() et que l'état est en fait changé, cela déclenchera l'émission du signal ``cliqué'' par le bouton ( et non ``toggled'' comme beaucoup de personnes le pensent ).

Pour obtenir l'état d'un bouton, vous pouvez utiliser :

Plutôt que de changer la valeur d'un bouton toggle en contrôlant son état actif et en déclarant la valeur opposée, utiliser tout simplement la fonction :

Cette fonction émettra aussi le signal ``toggled''.

Les cases à cocher

Les cases à cocher héritent de beaucoup de propriétés et de fonctions des boutons toggle, mais ils ont une allure différente. Plutôt que d'être des boutons avec du texte à l'intérieur, ce sont des petites cases avec le texte à leur droite. Elles sont souvent utilisées pour choisir des options oui ou non dans une application.

Les deux fonctions de création sont les mêmes que pour un bouton normal.

Passer une chaîne en argument crée une case à cocher avec un label à son côté. Le contrôle de l'état de la case se fait de la même manière que pour le bouton toggle.

Les boutons radio

Créer des boutons radio

Les boutons radio sont similaires aux cases à cocher sauf qu'ils sont regroupés de sorte qu'un seul puisse être sélectionné. Ils sont très utiles dans les programmes ou l'on doit choisir dans une liste d'options.

On crée un nouveau bouton radio avec l'une des fonctions suivantes :

Vous noterez la présence d'un second argument dans la seconde fonction. Les boutons radio doivent appartenir à un groupe pour accomplir leur devoir proprement. Le premier appel new Gtk::RadioButton() devrait avoir le label comme unique argument. Alors, vous ajoutez les autres boutons radio au groupe en utilisant l'un des boutons déjà présent dans le groupe comme second argument. Le bout de code suivant devrait vous éclaircir les idées :

Déclarer quel doit être le bouton pressé est souvent une bonne idée :

Cela fonctionne comme décrit dans la section sur les boutons toggle. Une fois que les boutons radios sont regroupés seul un peut être actif. Si l'utilisateur clique sur un bouton puis sur l'autre, le premier émettra en premier le signal ``toggled'' signifiant qu'il est devenu inactif puis le second émettra le signal ``toggled'' pour dire qu'il devient actif.

Les groupes de boutons

Si vous voulez obtenir une liste de tous les boutons appartenant à un groupe, vous pouvez utiliser la fonction :

Si vous voulez ajouter un bouton radio à un groupe après qu'il ait été créé, utilisez :

L'argument @group est une liste des boutons radio, qui appartiennent au même groupe. On l'obtient habituellement de la fonction button_group().

Exemple

L'exemple suivant crée un groupe de quatre boutons radio.

Radio Button Example Image


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