IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

Signal Click pour une image


Sujet :

GTK+ avec C & C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 12
    Par défaut Signal Click pour une image
    Bonjour,

    Je suis nouveau e GTK+ et je n'arrive pas à faire la chose suivante :

    J'ai posé une image sur ma feuille (pWindow), et je voudrais lorsque je click sur l'image faire une fonction choisi, voici mon code.

    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
    #include <stdlib.h>
    #include <gtk/gtk.h>
     
    #define WIN_Width 266
    #define WIN_Height 459
     
    GtkWidget *pWindow;
    GtkWidget *pFixed;
     
    int main(int argc, char **argv)
    { 
     
    	GtkWidget *pQuitBtn;
    	GtkWidget *pQuitImage;
     
        gtk_init(&argc, &argv);
     
        /* Creation de la fenetre */
        pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_default_size(GTK_WINDOW(pWindow), WIN_Width ,WIN_Height); 
    	gtk_window_position(GTK_WINDOW(pWindow), GTK_WIN_POS_CENTER);
     
        /* Connexion du signal "destroy" de la fenetre */
        g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
     
    	/* Create a Fixed Container */
    	pFixed = gtk_fixed_new();
    	gtk_container_add(GTK_CONTAINER(pWindow), pFixed);
    	gtk_widget_show(pFixed);
     
     
     
        /* Insertion du bouton */
        pQuitImage = gtk_image_new_from_file("./bouton.jpg");
        gtk_widget_add_events(pQuitImage, GDK_BUTTON_PRESS_MASK);
        g_signal_connect(G_OBJECT(pQuitImage), "button-press-event", G_CALLBACK(gtk_main_quit), NULL);
        gtk_fixed_put (GTK_FIXED (pFixed), pQuitImage, 88, 408);
     
     
        /* Affichage de la fenetre */
        gtk_widget_show_all(pWindow); 
     
        /* Demarrage de la boucle evenementielle */
        gtk_main();
     
        return EXIT_SUCCESS; 
    }
    Voila le problème c'est que lorsque je click sur l'image rien ne se passe.

    Pouvez-vous m'aidé ?

    Cordialement, Jielde.

  2. #2
    Membre confirmé Avatar de thibane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2007
    Messages : 143
    Par défaut
    Salut Jielde.

    Ton problème est que tu ne peux pas associer le signal "BUTTON_PRESS" à une image.
    L'astuce est de créer une GtkEventBox et d'insérer ton image dedans.
    La GtkEventBox est en quelque sorte une boite d'apparence vide mais qui possède les propriété d'une fenêtre et donc elle gère le signal qui t'intéresse.

    http://developer.gnome.org/doc/API/g...-EVENT-BOX-NEW

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 12
    Par défaut
    Merci pour ta réponse Thibane,

    Je viens de faire sa, et sa marche :

    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
     
     
    #include <stdlib.h>
    #include <gtk/gtk.h>
     
    #define WIN_Width 266
    #define WIN_Height 459
     
    GtkWidget *pWindow;
    GtkWidget *pFixed;
     
    int main(int argc, char **argv)
    { 
    	GtkWidget *pQuitImage;
    	GtkWidget *event_box;
     
        gtk_init(&argc, &argv);
     
        /* Creation de la fenetre */
        pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_default_size(GTK_WINDOW(pWindow), WIN_Width ,WIN_Height); 
    	gtk_window_position(GTK_WINDOW(pWindow), GTK_WIN_POS_CENTER);
     
        /* Connexion du signal "destroy" de la fenetre */
        g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
     
    	/* Create a Fixed Container */
    	pFixed = gtk_fixed_new();
    	gtk_container_add(GTK_CONTAINER(pWindow), pFixed);
    	gtk_widget_show(pFixed);
     
     
     
        /* Insertion du bouton */
    	pQuitImage = gtk_image_new_from_file("./bouton.jpg");
    	event_box = gtk_event_box_new ();
        gtk_widget_add_events(event_box, GDK_BUTTON_PRESS_MASK);
    	gtk_container_add (GTK_CONTAINER (event_box), pQuitImage);
    	gtk_fixed_put (GTK_FIXED (pFixed), event_box, 88, 408);
        g_signal_connect (G_OBJECT (event_box), 
                          "button_press_event",
                          G_CALLBACK (gtk_main_quit),
                          pQuitImage);
     
     
     
        /* Affichage de la fenetre */
        gtk_widget_show_all(pWindow); 
     
        /* Demarrage de la boucle evenementielle */
        gtk_main();
     
        return EXIT_SUCCESS; 
    }
    Encore merci

Discussions similaires

  1. Emission d'un signal lors d'un click sur une image
    Par peuf23 dans le forum Débuter
    Réponses: 27
    Dernier message: 20/12/2008, 17h12
  2. comment afficher cursor: hand sous FF pour une image?
    Par Death83 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/09/2005, 08h48
  3. [D2005][CGI] Nom de fichier pour une image
    Par Argonaute dans le forum Web & réseau
    Réponses: 1
    Dernier message: 30/08/2005, 12h56
  4. filtre séparable pour une image
    Par tlemcenvisit dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 31/05/2005, 16h45
  5. Définir un angle de rotation pour une image
    Par mateo.14 dans le forum C++
    Réponses: 5
    Dernier message: 25/03/2005, 14h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo