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 :

Afficher une image sur clic d'un bouton


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 Afficher une image sur clic d'un bouton
    Bonjour à tous.

    Je voudrais afficher une image sur clic d'un bouton.
    Le code suivant m'affiche bien mon bouton mais par contre ca n'affiche rien.

    Est-ce que qqun peut me dire ou est le pb dans ce 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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <gtk/gtk.h>
     
    void charge(GtkWidget *pButton,GtkWidget *pVBox);
     
    int main(int argc,char **argv)
    {
        GtkWidget *pWindow;
        GtkWidget *pButton;
        GtkWidget *pImage;
        GtkWidget *pVBox;
     
        gtk_init(&argc,&argv);
     
        pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_position(GTK_WINDOW(pWindow), GTK_WIN_POS_CENTER);
        gtk_window_set_default_size(GTK_WINDOW(pWindow), 600, 400);
        gtk_window_set_title(GTK_WINDOW(pWindow), "Charger Image");
     
        pVBox = gtk_vbox_new(FALSE, 0);
        gtk_container_add(GTK_CONTAINER(pWindow), pVBox);
     
        pButton = gtk_button_new_with_label("Charger");
        gtk_box_pack_start(GTK_BOX(pVBox), pButton, FALSE, FALSE, 0);
     
        g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
        g_signal_connect(G_OBJECT(pButton), "clicked", G_CALLBACK(charge),pVBox);
     
        gtk_widget_show_all(pWindow);
     
        gtk_main();
     
        return EXIT_SUCCESS;
     
    }
    void charge(GtkWidget *pButton,GtkWidget *pVBox)
    {
        GtkWidget *pImage;
     
        pImage = gtk_image_new_from_file("1.png");
     
        gtk_box_pack_end(GTK_BOX(pVBox), pImage, TRUE, FALSE, 0);
     
    }
    Je développe en C/GTK+

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Il faudrais penser à respecter les signature des callback:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void charge(GtkWidget *pButton, gpointeur p_data)
    Ensuite tu cast dans ta fonction pou récupérer ton pVbox, j'ai pas regardé tout ton code mais essaye déjà de rectifier ca


    PS: Bienvenue sur les forums de developpez.com
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    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
    Merci pour la rapidité de la réponse franck, ca fait plusieurs heures que je bombarde plusieurs forums et pour l'instant c'est le seul ou j'ai eu une réponse

    J'ai apporté, selon tes conseils, quelques modifications :

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <gtk/gtk.h>
     
    void charge(GtkWidget *pButton, gpointeur data);
     
    int main(int argc,char **argv)
    {
        GtkWidget *pWindow;
        GtkWidget *pButton;
        GtkWidget *pImage;
        GtkWidget *pVBox;
     
        gtk_init(&argc,&argv);
     
        pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_position(GTK_WINDOW(pWindow), GTK_WIN_POS_CENTER);
        gtk_window_set_default_size(GTK_WINDOW(pWindow), 600, 400);
        gtk_window_set_title(GTK_WINDOW(pWindow), "Charger Image");
     
        pVBox = gtk_vbox_new(FALSE, 0);
        gtk_container_add(GTK_CONTAINER(pWindow), pVBox);
     
        pButton = gtk_button_new_with_label("Charger");
        gtk_box_pack_start(GTK_BOX(pVBox), pButton, FALSE, FALSE, 0);
     
        g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
        g_signal_connect(G_OBJECT(pButton), "clicked", G_CALLBACK(charge),(gpointer*) pVBox);
     
        gtk_widget_show_all(pWindow);
     
        gtk_main();
     
        return EXIT_SUCCESS;
     
    }
    void charge(GtkWidget *pButton, gpointeur data)
    {
        GtkWidget *pImage;
        GtkWidget *pVBox1;
     
        pVBox1 = (pVBox*) data;
     
        pImage = gtk_image_new_from_file("1.png");
     
        gtk_box_pack_end(GTK_BOX(pVBox1), pImage, TRUE, FALSE, 0);
     
    }
    J'ai quelques erreurs que je ne comprends pas comme
    error: expected declaration specifiers or '...' before 'gpointeur'
    concernant la ligne "void...." juste après les include.

    Là je patauge royalement

    PS : merci pour l'accueil

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Ha oups désolé c'est ma faute pour l'erreur, c'est gpointer
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    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
    Je venais justement de rectifier, je croyais qu'elle venait de moi.

    Plus d'erreur à la compilation, par contre, toujours rien qui s'affiche dans ma satanée Window...

  6. #6
    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
    Je redonne le code en entier avec comme modifications :
    _ dans la fonction "charge", je cast avec GtkWidget et non plus pVBox
    _pointeur remplacé par pointer un peu partout..

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <gtk/gtk.h>
     
    void charge(GtkWidget *pButton, gpointer data);
     
    int main(int argc,char **argv)
    {
        GtkWidget *pWindow;
        GtkWidget *pButton;
        GtkWidget *pImage;
        GtkWidget *pVBox;
     
        gtk_init(&argc,&argv);
     
        pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_position(GTK_WINDOW(pWindow), GTK_WIN_POS_CENTER);
        gtk_window_set_default_size(GTK_WINDOW(pWindow), 600, 400);
        gtk_window_set_title(GTK_WINDOW(pWindow), "Charger Image");
     
        pVBox = gtk_vbox_new(FALSE, 0);
        gtk_container_add(GTK_CONTAINER(pWindow), pVBox);
     
        pButton = gtk_button_new_with_label("Charger");
        gtk_box_pack_start(GTK_BOX(pVBox), pButton, FALSE, FALSE, 0);
     
        g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
        g_signal_connect(G_OBJECT(pButton), "clicked", G_CALLBACK(charge),(gpointer*) pVBox);
     
        gtk_widget_show_all(pWindow);
     
        gtk_main();
     
        return EXIT_SUCCESS;
     
    }
    void charge(GtkWidget *pButton, gpointer data)
    {
        GtkWidget *pImage;
        GtkWidget *pVBox1;
     
        pVBox1 = (GtkWidget*) data;
     
        pImage = gtk_image_new_from_file("1.png");
     
        gtk_box_pack_end(GTK_BOX(pVBox1), pImage, TRUE, FALSE, 0);
     
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. CS5 / Afficher une image au clic sur un bouton
    Par yan1s dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 14/05/2012, 09h44
  2. Comment afficher une image sur un bouton
    Par MilouTux dans le forum Interfaces Graphiques
    Réponses: 9
    Dernier message: 30/04/2007, 15h18
  3. Afficher une image au clic sur un bouton
    Par lycaon dans le forum Général VBA
    Réponses: 4
    Dernier message: 23/04/2007, 19h21
  4. [débutant]Afficher une image sur une JFrame
    Par mavina dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 09/08/2006, 16h25
  5. afficher une image sur toute la fenêtre
    Par argon dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 18/02/2006, 09h44

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