Bonjour à tous,

J'ai besoin d'un widget un peu spécial. Ca ressemble comme deux gouttes d'eau à un toggle button, et le code suivant en donne un exemple d'utilisation:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/* travail sur toggle button */
 
#include <stdlib.h>
#include <gtk/gtk.h>
 
int actif=0;
GtkWidget *pButton1; /*  bouton 1 toggle */
GtkWidget *Plabel; /* un label */
 
int main(int argc, char **argv)
{
    /* déclaration des widgets */
    GtkWidget *pWindow; /*fenetre principale */
    GtkWidget *pButton2; /*  bouton 2 */
    GtkWidget *pVBox; /* une box verticale */
 
    void OnDestroy(GtkWidget *pWidget, gpointer pData); /* fonction call back destroy */
    void Press_Button(GtkButton *button, gpointer user_data); /* fonction boutton 1 */
 
    /* Initialisation de GTK+ */
    gtk_init(&argc, &argv);
    /* création de la fenetre */
    pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    /* définition des paramètres de la fenetre */
    gtk_window_set_position(GTK_WINDOW(pWindow), GTK_WIN_POS_CENTER);
    gtk_window_set_title(GTK_WINDOW(pWindow), "Test toggle button");
    /* création de la box verticale */
    pVBox = gtk_vbox_new(FALSE, 0);
    /* création du bouton 1 toggle */
    pButton1 =  gtk_toggle_button_new();
    /* creation du label */
    Plabel=gtk_label_new("non");
    /* on l'ajoute dans le button toggle */
    gtk_container_add(GTK_TOGGLE_BUTTON(pButton1), Plabel);
    /* création du bouton 2 */
    pButton2 = gtk_button_new_with_label("changement");
    /* ajout des deux bouttons dans la boite  verticale */
    gtk_box_pack_start(GTK_BOX(pVBox), pButton1, FALSE, TRUE, 0);
    gtk_box_pack_start(GTK_BOX(pVBox), pButton2, FALSE, TRUE, 0);
    /* ajout de la GtkVBox à la fenetre */
    gtk_container_add(GTK_CONTAINER(pWindow), pVBox);
    /* Connexion des signaux */
    g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(OnDestroy), NULL);
    g_signal_connect(G_OBJECT(pButton2),"pressed", G_CALLBACK(Press_Button), NULL);
    /*affichage de la fenetre */
    gtk_widget_show_all(pWindow);
    /* Demarrage de la boucle evenementielle */
    gtk_main();
    return EXIT_SUCCESS;
}
void OnDestroy(GtkWidget *pWidget, gpointer pData){
    /* Arret de la boucle evenementielle */
     gtk_main_quit();
}
void Press_Button(GtkButton *button, gpointer user_data) {
    /* modif statut */
    if (actif)
        {
            actif=0;
            gtk_label_set_text (Plabel, "non");
            gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (pButton1), FALSE);
        }
    else
        {
            actif=1;
             gtk_label_set_text (Plabel, "oui");
            gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (pButton1), TRUE);
        }
}
So far, so good.

Ce dont j'ai besoin, c'est d'un widget comme ca, mais qui ne reçoive aucun signaux (et de fait aucun signal ne lui est connecté dans le code ci-dessus) et qui ne fasse rien (i.e., ne change pas de statut) lorsque l'utilisateur click dessus. Je veux en fait me servir de ce genre de widgets pour fournir graphiquement une série d'informations à l'utilisateur, et l'utilisateur ne doit pas pouvoir modifier cette information.

Je pourrais (j'imagine) créer mon propre widget en me servant du widget de toggle button déjà existant, mais je ne sais pas faire, et surtout je soupçonne qu'il existe un moyen de bloquer l'interaction entre l'utilisateur et ce genre de widgets. Non? J'ai beau chercher, je n'ai rien trouvé, cependant. Toute aide sur ce point est la bienvenue.

D'avance merci,

Eric.