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 :

insertion icon dans bouton toolbar


Sujet :

GTK+ avec C & C++

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut insertion icon dans bouton toolbar
    Bonsoir tout le monde

    J'ai du mal à mettre une image dans un bouton toolbar.

    Je me suis aidé de ce tuto.

    http://gtk.developpez.com/cours/gtk2/Gtk.Les.images.php

    et de celuis là.

    http://www.gtk.org/tutorial/x1404.html

    Voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    e.image = gtk_image_new_from_file("./icon/apercu.ico");
    gtk_box_pack_start(GTK_BOX(e.vbox), e.image, FALSE, FALSE, 5);
     
    gtk_toolbar_insert_append_item(GTK_TOOLBAR(b.toolbar),
    "Aperçu",
    e.image,
     
     
    -1);
    Voici l'erreur

    [Linker error] undefined reference to `gtk_toolbar_insert_append_item'
    ld returned 1 exit status

    C:\Documents and Settings\Administrateur\Bureau\gateoffice\mytext\Makefile.win [Build Error] [mytext.exe] Error 1
    Pourriez vous m'aider svp?

    Merci

    Cordialement

    A bientôt

  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
    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 éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Bonjour tout le monde

    Dois je charger l'icone dans une variable.

    Cordialement

    A bientôt

  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
    Citation Envoyé par argon
    Dois je charger l'icone dans une variable.
    Si tu te prennais au moins la peine de regarder les arguments que prennent ces fonctions tu le saurais !
    Si tu regarde bien, tu as un argument GtkWidget *icon !
    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 éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Re

    Justement je ne voix pas clairement ce que veux dire cette argument.

    Je ne suis pas sur, mai je pense qu'il faut mettre l'icone dans la variable et apres mettre la variable dans le bouton toolbar.

    A+

  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 : 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
    Bin tu as plusieures solutions mais la plus simple serait encore de charger ton image dans un GtkImage (une sorte de GtkWidget) puis tu lui passes en argument en le transtypant ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GTK_WIDGET (ton_widget)
    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
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Re

    J'ai essayé de faire comme ceci.

    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
     
    void barreoutil(composant * e)
    {
     
    e->toolbar =gtk_toolbar_new();     
    gtk_box_pack_start(GTK_BOX(e->vbox),e->toolbar,FALSE,FALSE,0);     
     
    e->icon= gtk_image_new_from_file("./icon/nouv.ico");     
    gtk_toolbar_insert_item(GTK_TOOLBAR(e->toolbar),
    "Nouveau", <-nom du bouton
    e->icon,<-icon du bouton
    "Nouveau",<-message bull du bouton
     
    <-fonction utilisé.
    1<- position);     
     
    }
    Ca ne fonctionne pas.

    J'essai de comprendre le code, c'est pour cela que j'ai mis des <-

    Que me manque t'il.

    a+

  8. #8
    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
    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
     
    void barreoutil(composant * e)
    {
       e->toolbar =gtk_toolbar_new();     
       gtk_box_pack_start(GTK_BOX(e->vbox),e->toolbar,FALSE,FALSE,0);     
     
       e->icon= gtk_image_new_from_file("./icon/nouv.ico");     
     
       gtk_toolbar_insert_item(
          GTK_TOOLBAR (e->toolbar),
          "Nouveau",
          NULL,
          NULL,
          GTK_WIDGET (e->icon),
          NULL,
          NULL,
          1);
    }
    Peut-être comme ca, il faut que tu apprenne à respecter l'ordre des argument et leur nombre, si la fonction en demande 8, tu dois lui fournir les 8 dans le même ordre par rapport à sa signature !

    D'après ce que j'ai vu sur la ref de l'api (que tu dois toujours avoir sous l'coude), cette fonction est même dépréciée, à ne donc plus utiliser lors de nouveaux développement.
    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 !

  9. #9
    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
    Dans l'argument que tu ne comprennais pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    GtkWidget*  gtk_toolbar_insert_item         (GtkToolbar *toolbar,
                                                 const char *text,
                                                 const char *tooltip_text,
                                                 const char *tooltip_private_text,
                                                 GtkWidget *icon,
                                                 GtkSignalFunc callback,
                                                 gpointer user_data,
                                                 gint position);
    Le premier est une fonction de rappel comme celle que tu attribue à un widget par la fonction g_signal_connect et le second est une donnée utilisateur, tout comme avec la fonction de connection de signaux !
    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 !

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Bonjour tout le monde

    Je vais essayer de faire de cette maniere si la précédente est dépréciée.

    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
     
    void barreoutil(composant * e)
    {
    e->toolbar =gtk_toolbar_new();     
    gtk_box_pack_start(GTK_BOX(e->vbox),e->toolbar,FALSE,FALSE,0);     
     
    e->iconnew= gtk_image_new_from_file("./icon/nouv.ico");  
     
    gtk_toolbar_append_item (GTK_TOOLBAR(e->toolbar),
    "Nouveau",
    "Nouveau",
    NULL,
    GTK_WIDGET(e->iconnew),
    NULL,
    NULL,
    1);  <- erreur ici.
    }
    Il m'affiche une erreur lors de la compilation.

    De plus, lors de la précédente fonction, le menu ne s'affiché plus, j'ai enlévé la barre d'outil est le menu c'est réafiché.

    j'ai fai (un menu.c et une Barreoutil. c), car il y aura des centaines de lignes.

    Que me conseillez vous?

    Merci

    Cordialement

    A bientôt

  11. #11
    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
    En fait j'ai un peu regarder, et toutes ces fonctions sont dépréciées

    Voilà comment il faut procéder:
    • Création d'une image, comme tu le fait avec gtk_image_new_from_file
    • Tu déclare un nouveau GtkWidget (ex: toolbutton) et tu créé un nouveau bouton avec la fonction gtk_tool_button_new. Son premier argument c'est ton widget qui contient l'image et le second, un éventuel texte qui ira se placé sous l'icône.
    • Pour placer ce nouveau bouton dans la barre d'outils, tu utilisera la fonction gtk_container_add que tu connais déjà !
    • Si tu veux lui affecter un callback, tu utilisera tout simplement la fonction g_signal_connect que tu connais également !


    Voilà, c'est tout
    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 !

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Bonjour tout le monde

    Derniere question au sujet de ce post, peut on réduire la taille des icones des barre d'outil.

    Merci

    Cordialement

    A bientôt

  13. #13
    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
    Citation Envoyé par argon
    Bonjour tout le monde

    Derniere question au sujet de ce post, peut on réduire la taille des icones des barre d'outil.

    Merci

    Cordialement

    A bientôt
    Plus maintenant, la taille est maintenant fixée d'après les réglages utilisateur sur l'environnement GTK+ tout entier. Un peu comme avec Gnome, GTK+ regarde les préférences de l'environement et du thème en particulier pour tout fixer !
    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 !

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Re

    Donc c'est à moi de réduire la taille de l'icone.

    a+

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Bonjour tout le monde

    Voici ce que j'ai fais

    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
     
    void barreoutil(composant * e)
    {
     
    e->toolbar =gtk_toolbar_new();     
    gtk_box_pack_start(GTK_BOX(e->vbox),e->toolbar,FALSE,FALSE,0);    
     
     
    e->iconnew= gtk_image_new_from_file("./icon/new_gif.gif");           
    e->buttonnew = gtk_tool_button_new(GTK_WIDGET(e->iconnew),"Nouveau");     
     
     
     
    e->icondoss = gtk_image_new_from_file("./icon/open_gif.gif");     
    e->buttonrep = gtk_tool_button_new( GTK_WIDGET(e->icondoss),"Dossier");    
     
     
     
    }
    Il me répond ceci.


    14 assignment from incompatible pointer type
    19 assignment from incompatible pointer type
    Que se passe t'il?

    Cordialement

    A bientôt

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Bonjour tout le monde

    Pourquoi me dit il que le pointer est imcompatible.


    Cordialement

    A bientôt

  17. #17
    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
    Essaye sans la macro de transtypage car ici il n'y a pas d'interêt à le faire vu que ton widget est du type GtkWidget (lors de sa déclaration) et la fonction attend justement un argument de ce type ! Il est donc probable que la macro échoue et dans ce cas, elle renvoye une erreur.
    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 !

  18. #18
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Bonjour tout le monde

    Essaye sans la macro de transtypage
    Je ne comprends pas c'est termes.

    Cordialement

    A bientôt

  19. #19
    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
    Essaye de cette façon, sans la macro GTK_WIDGET :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void barreoutil(composant * e)
    {     
       e->toolbar =gtk_toolbar_new();     
       gtk_box_pack_start(GTK_BOX(e->vbox),e->toolbar,FALSE,FALSE,0);    
     
       e->iconnew= gtk_image_new_from_file("./icon/new_gif.gif");           
       e->buttonnew = gtk_tool_button_new(e->iconnew,"Nouveau");     
     
       e->icondoss = gtk_image_new_from_file("./icon/open_gif.gif");     
       e->buttonrep = gtk_tool_button_new(e->icondoss,"Dossier");       
    }
    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 !

  20. #20
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Bonsoir tout le monde

    J'ai fais les modiffication, et l'erreur est toujour là.

    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
     
    void barreoutil(composant * e)
    {
    e->toolbar =gtk_toolbar_new();     
    gtk_box_pack_start(GTK_BOX(e->vbox),e->toolbar,FALSE,FALSE,0);    
     
     
    e->iconnew= gtk_image_new_from_file("./icon/new_gif.gif");           
    e->buttonnew = gtk_tool_button_new(e->iconnew,"Nouveau");     
     
     
     
    e->icondoss = gtk_image_new_from_file("./icon/open_gif.gif");     
    e->buttonrep = gtk_tool_button_new(e->icondoss,"Dossier");
    Erreur

    13 barreoutil.c [Warning] assignment from incompatible pointer type

    18 barreoutil.c [Warning] assignment from incompatible pointer type

    Cordialement

    A bientôt

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Insertion Icone dans Graphe Excel selon Condition
    Par lindoushka dans le forum Excel
    Réponses: 8
    Dernier message: 18/07/2014, 07h37
  2. Insertion icone dans un JButton
    Par JTABLE dans le forum NetBeans
    Réponses: 2
    Dernier message: 23/12/2013, 15h29
  3. [RCP] Icones dans une toolbar: taille
    Par Ma29200 dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 19/07/2012, 10h09
  4. icone dans bouton
    Par harald-aldb dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 13/12/2007, 13h53
  5. creer sa propre icone dans la toolbar
    Par hysah dans le forum wxPython
    Réponses: 1
    Dernier message: 15/01/2006, 20h15

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