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 :

Mettre une image (png) ET un label sur une BOUTON


Sujet :

GTK+ avec C & C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 64
    Points : 31
    Points
    31
    Par défaut Mettre une image (png) ET un label sur une BOUTON
    Bonjour,
    la question est dans le titre,
    j'ai réussi sans difficulté à charger mon image png sur le bouton, en voici la partie de code.

    La ou sa se complique c'est que j'aimerai pouvoir mettre mon image à gauche par exemple et le label "corbeille" à droite. enfin au moins arriver à charger les deux sur un bouton. pour l'organisation sa peut se faire après.

    Donc si vous avez des idées, solutions, hésitez pas.

    corbeille = gtk_image_new_from_file("corbeille.png");
    B_effacer=gtk_button_new();
    gtk_container_add(GTK_CONTAINER(B_effacer), corbeille);
    PS : gtk_button_set_image(GTK_BUTTON(B_effacer),corbeille); lorsque j'utilise cette fonction j'ai la ligne d'erreur suivante : [Linker error] undefined reference to `gtk_button_set_image'

  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 : 47
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par diophantes
    Bonjour,
    la question est dans le titre,
    j'ai réussi sans difficulté à charger mon image png sur le bouton, en voici la partie de code.

    La ou sa se complique c'est que j'aimerai pouvoir mettre mon image à gauche par exemple et le label "corbeille" à droite. enfin au moins arriver à charger les deux sur un bouton. pour l'organisation sa peut se faire après.

    Donc si vous avez des idées, solutions, hésitez pas.
    Un petit code vaut mieux qu'un long discours

    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 <gtk/gtk.h>
     
     
    int main (int argc, char ** argv)
    {
       GtkWidget * p_win = NULL;
       GtkWidget * p_vbox = NULL;
       GtkWidget * p_btn = NULL;
       GtkWidget * p_button_label = NULL;
       GtkWidget * p_button_hbox = NULL;
       GtkWidget * p_button_image = NULL;
     
     
       gtk_init (& argc, & argv);
     
     
       p_win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
       p_vbox = gtk_vbox_new (TRUE, 0);
       p_btn = gtk_button_new ();
       p_button_label = gtk_label_new ("Bouton 1");
       p_button_hbox = gtk_hbox_new (TRUE, 0);
       p_button_image = gtk_image_new_from_file ("gtklogo.png");
     
       gtk_window_set_default_size (GTK_WINDOW (p_win), 200, 25);
       gtk_container_add (GTK_CONTAINER (p_win), p_vbox);
       gtk_box_pack_start (GTK_BOX (p_vbox), p_btn, TRUE, TRUE, 0);
     
       g_signal_connect (
          G_OBJECT (p_win), "destroy", G_CALLBACK (gtk_main_quit), NULL
       );
     
     
       /*
        * ICI, on met le GtkLabel puis le GtkImage sur le GtkButton :
        */
       gtk_box_pack_start (GTK_BOX (p_button_hbox), p_button_label, TRUE, TRUE, 0);
       gtk_box_pack_start (GTK_BOX (p_button_hbox), p_button_image, TRUE, TRUE, 0);
       gtk_container_add (GTK_CONTAINER (p_btn), p_button_hbox);
     
     
       gtk_widget_show_all (p_win);
       gtk_main ();
     
     
       return 0;
    }
    Citation Envoyé par diophantes
    PS : gtk_button_set_image(GTK_BUTTON(B_effacer),corbeille); lorsque j'utilise cette fonction j'ai la ligne d'erreur suivante : [Linker error] undefined reference to `gtk_button_set_image'
    Cette fonction n'est disponible qu'à partir de la version 2.6 de GTK+ tel que c'est indiqué dans la ref de l'API ! Quelle est ta version ?
    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 64
    Points : 31
    Points
    31
    Par défaut
    Ta solution marche, je l'ai testé sur un code source différent de celui de mon projet,

    Le problème c'est que quand je l'implémente sa marche pas a l'éxecution,
    Erreur de windows.

    J'ai testé différent truc, ce que je comprend pas c'est que j'ai réussi à le mettre plein de pSeparator pour tester et sa sa marché, mais dès que je passe aux labels ou à l'image sa foire.

    Autre chose de bizarre j'ai réussi à placer un label que j'avais crée auparavant (réussi à le mettre dans la box du bouton a la place de la ou je voulais le mettre)

    dès que je redéclare un nouveau label il veut pas le mettre. j'en vient à me demander si ya pas une limite dans les déclarations.

    Qu'est ce que je peut faire???

    (sa me gene de mettre tout mon code source sur le forum car c'est un projet scolaire et on pourrai me copier, donc si t'en a besoin je te l'envoi en MP)

    Merci

  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 : 47
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par diophantes
    Qu'est ce que je peut faire???
    Donner le code source minimum compilable. J'entend par code minimum, la partie du code en question qui te pose problème mais que ce soit dans un projet compilable histoire de ne pas avoir à faire de la rétro conception comme dirais notre très cher Emmanuel
    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 64
    Points : 31
    Points
    31
    Par défaut
    autant dire que c'est insensé, j'ai minimisé mon code pour faire un test, et la miracle sa à marcher,

    donc j'ai recopier juste la partie dot j'avais besoin pour la mettre sur l'ensemble de mon projet mais la sa a pas marcher,

    je vais continuer à faire des tests pour voir si je fini par y arriver.

    Sais tu si le nombre de widget sur une mettre fenetre ou par box est limité?

  6. #6
    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 : 47
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par diophantes
    Sais tu si le nombre de widget sur une mettre fenetre ou par box est limité?
    Non il n'y a pas de limites. Pour ton problème, il doit surement se situer autre part alors !
    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 !

  7. #7
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par diophantes
    Sais tu si le nombre de widget sur une mettre fenetre ou par box est limité?
    Pour les GtkWindow c'est limité à 1, pour les GtkBox c'est théoriquement illimité

Discussions similaires

  1. Comment utiliser usemap sur une image png transparente
    Par master_kb2 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/01/2008, 14h00
  2. avoir des labels sur une 'Image'
    Par flamel dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 22/09/2007, 18h21
  3. Emplacement des antennes sur une image PNG
    Par ferraoun dans le forum Traitement d'images
    Réponses: 5
    Dernier message: 05/06/2007, 17h27
  4. Comment mettre un label sur une image
    Par dug dans le forum MFC
    Réponses: 3
    Dernier message: 07/04/2004, 10h40

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