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 :

Pb affichage GTK+ en C


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 9
    Par défaut Pb affichage GTK+ en C
    Bonjour,

    Je suis en train de créer un mini dictionnaire avec GTK et je n'arrive pas à afficher dans mon widget textview1 le texte d'un bouton.
    Par exemple je voudrais afficher le mot "Bouton" du widget button1 où il est inscrit "Bouton"

    Merci d'avance de votre aide

    ps : bout de code (pas sur du tout) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
             g_signal_connect (
                gtk_builder_get_object (p_builder, "button1"),
                "clicked", G_CALLBACK (???),  // AFFICHER dans l'encart textview1
             );

  2. #2
    Membre confirmé Avatar de doderic
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 215
    Par défaut
    Bonjour,

    Je suis en train de créer un mini dictionnaire avec GTK et je n'arrive pas à afficher dans mon widget textview1 le texte d'un bouton.
    Par exemple je voudrais afficher le mot "Bouton" du widget button1 où il est inscrit "Bouton"

    Merci d'avance de votre aide

    ps : bout de code (pas sur du tout) :

    g_signal_connect (
    gtk_builder_get_object (p_builder, "button1"),
    "clicked", G_CALLBACK (???), // AFFICHER dans l'encart textview1
    );
    SAlut! ce que tu veux faire doit ressembler à ceci:

    - la fonction ccallback qui sera appelée lors d'un clic sur le bouton va récupérer (dans une variable) le label inscrit sur le bouton avec la fonction gtk_button_get_text. Pour finir, tu inscris le contenu de la variable dans ton textview. Essai ça, ça marchera sinon reviens ;-)

    A+

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 9
    Par défaut
    Merci de ta réponse
    Cependant je suis un peu dépassé par le niveau technique, je vois pas très bien comment afficher dans le textview après avoir recupéré ma variable

    Exemple pour afficher un chiffre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int val;
             g_signal_connect (
                gtk_builder_get_object (p_builder, "1"),
                "clicked", G_CALLBACK (gtk_button_get_text(val)),
                ???
             );

    Le problème concret est le suivant :


    http://nsa03.casimages.com/img/2009/...4317863261.jpg

    Je voudrais lorsque je clique sur "Mot1" qu'il s'affiche "Mot1" sur l'écran


    Mot1 : id button1 label Mot1
    Mot2 : id button2 label Mot2
    ecran : GtkEntry ecran

    Voila je suis toujours bloqué...

    Merci d'avance.

  4. #4
    Membre confirmé Avatar de doderic
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 215
    Par défaut
    Citation Envoyé par balouw Voir le message
    Exemple pour afficher un chiffre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int val;
             g_signal_connect (
                gtk_builder_get_object (p_builder, "1"),
                "clicked", G_CALLBACK (gtk_button_get_text(val)),
                ???
             );

    Le problème concret est le suivant :
    Slt! d'abord ce bout de code ci-dessus n'est pas correct!

    Je voudrais lorsque je clique sur "Mot1" qu'il s'affiche "Mot1" sur l'écran


    Mot1 : id button1 label Mot1
    Mot2 : id button2 label Mot2
    ecran : GtkEntry ecran

    Voila je suis toujours bloqué...
    Ok! je vois mieux ce que tu veux dire. et puis tu utilises glade à ce que je vois :-). essaie ceci:

    Le signal à connecter au premier bouton:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    g_signal_connect (gtk_builder_get_object (p_builder, "button1"),"clicked", G_CALLBACK (affiche_mot),gtk_builder_get_object (p_builder, "button1"));
    La fonction callback (affiche_mot) mise dans le signal:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void affiche_mot(GtkWidget *widget, gpointer data)
    {
    const gchar *recup_texte=gtk_button_get_text(GTK_BUTTON(data));
     
    gtk_entry_set_text(GTK_ENTRY(entry1),recup_texte);
    }
    Sur la quatrième ligne du code ci-dessus, tu remplaces ecran par le nom que tu as donné à ton GtkEntry.
    Voilà! essaie ce code et si c'est bon alors tu n'auras qu'à l'utiliser aussi pour le second bouton mais en remplaçant button1 par button2.

    Au fait c'est un GtkEntry que tu utilises, alors pourquoi parlais tu d'un textview?

    essaie de repasser me dire si c'est ok!
    Bonne suite!

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 9
    Par défaut
    Tout d'abord merci beaucoup pour ta précieuse aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void affiche_mot(GtkWidget *widget, gpointer data)
    {
    GtkWidget *entry1;
    const gchar *recup_texte = gtk_button_get_text(GTK_BUTTON(data));
     
    gtk_entry_set_text(GTK_ENTRY(entry1),recup_texte);
    }
    J'ai rajouté :
    Car il me le trouvé pas sinon.
    Cependant il y a encore une erreur, il ne trouve pas la fonction :
    undefined reference to `_gtk_button_get_text'
    Après plusieurs recherches sur le net j'ai pas trouvé beaucoup de traces de cette fonction.
    Enfin je crois que l'erreur vient de là, en mettant une autre fonction comme :
    Ca compile mais le programme ne fonctionne pas.

    Merci d'avance.

  6. #6
    Membre confirmé Avatar de doderic
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 215
    Par défaut
    Cependant il y a encore une erreur, il ne trouve pas la fonction :
    undefined reference to `_gtk_button_get_text'
    Après plusieurs recherches sur le net j'ai pas trouvé beaucoup de traces de cette fonction.
    Enfin je crois que l'erreur vient de là, en mettant une autre fonction comme :
    Ca compile mais le programme ne fonctionne pas.
    Oui, là t'as raison l'erreur venait de moi c'est plutot gtk_button_get_label() et non gtk_button_get_text

    En fait pour le entry1 ce n'est pas maintenant qu'il faut le déclarer dans ma fonction callback, je suppose que tu l'avais déjà fait. le Gtkentry a t-il été aussi fait sous glade? si oui à la récupération de entry1 depuis le fichier xml sera:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GtkWidget *mon_entry=(GtkWidget*)gtk_builder_get_object(p_builder,"le nom de ton entry dans le fichier xml");
    Au niveau du signal, reprends ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    GtkWidget *bouton=(GtkWidget*)gtk_builder_get_object(p_builder,"button1");
    g_signal_connect(gtk_builder_get_object(p_builder,"button1"),"clicked",G_CALLBACK(affiche_mot),bouton);
    Pour le contenu de la fonction affiche_mot, peu de choses change à part changer gtk_button_get_text par gtk_button_get_label et entry1 par mon_entry dont la récupération est fait ci-dessus.

    Bonne suite!

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

Discussions similaires

  1. probleme affichage gtk.Image
    Par zygou dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 14/05/2009, 15h34
  2. Affichage d'une series d'image en GTK
    Par majed_la7 dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 13/11/2007, 17h10
  3. widget d'affichage des données avec gtk+
    Par sabrinabest dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 11/09/2007, 17h31
  4. Bug d'affichage d'item et lenteur de GTK sous Vista
    Par Acivurt dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 12/08/2007, 15h50
  5. affichage dynamique gtk
    Par bilel016 dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 17/04/2007, 08h53

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