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 :

gtk+, glade, gestion des évènements


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut gtk+, glade, gestion des évènements
    Bonjour,
    J'aimerais savoir, si l'on veut gerer les evennements, avec glade, comment envoyer une callback, et des données en parametre, ou, meme, si c'est faisable.

    Par exemple, sans glade, j'aurais fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    g_signal_connect(G_OBJECT(pButtonAbout),
                    "clicked",
                    G_CALLBACK(OnAbout),
                    (gpointer) pWindow
                    );
    Mais avec glade, il faut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_builder_connect_signals(p_builder, NULL);
    Mais dans ce cas, comment transmettre mes paramettres à ma callback

    Dans l'attente d'une réponse...
    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Le 2ème paramètre qui est à NULL peut servir à ça.

  3. #3
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    Merci,
    Par contre, comment lui dire quel données envoyer à quelles fonctions

    J'ai fais quelques essais, mais sans grande reussite, a part obtenir des warnings de la part de glib

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Ca envoie la même donnée à tous les signaux qu'il connecte comme la doc l'indique...

  5. #5
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    C'est donc l'invitation à passer l'adresse d'une structure qui contiendra tout ce sont tes callbacks auront besoin...

  6. #6
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    Ok, merci, ça marche impec

    Mais, il y a encore une chose que je me demande, c'est dans glade, dans l'onglet signaux, à côté de la colonne ou l'on passe la callback, il y a une colonne "Données utilisateur".

    A quoi sert donc cette colonne?


    [EDIT] Par contre, j'ai un curieux probleme, c'est que quand j'alloue de la memoire, avec g_malloc, ça marche, mais quand je veux liberer cette memoire, le compliateur n'est pas d'accord:

    main.c:67: attention : passing argument 1 of ‘g_free’ discards qualifiers from pointer target type

    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    typedef struct _MainWindow
    {
    	GtkWidget *pWindow;
    	GtkWidget *pEntry;
    	GtkWidget *pLabel;
    } MainWindow;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
           gtk_init(&argc, &argv);
           fenetre = g_malloc(sizeof(MainWindow));
     
    /* Plein de code */
     
            g_free(fenetre);
    	return EXIT_SUCCESS;
    }

  7. #7
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Essaie de comprendre le warning du compilateur : vraisemblablement fenetre a été déclaré en const... forcément g_free ne peut détruire la mémoire si tu lui as dit qu'on n'avais pas le droit d'y toucher...

    Et pour les structures, utilise g_new plutôt que g_malloc, c'est plus clair.

  8. #8
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    Merci,

    En fait, je me suis trompé, le warning, n'était pas à cause de fenetre, mais à cause d'une chaine, contenant le label d'un GtkButton, et que j'essayais de liberer avec un g_free(sChaine), seulement, effectivement, cette chaine était de type const gchar*

  9. #9
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    Par contre, il n'existe vraiment pas un moyen d'envoyer une donnée spécifique a un widget, dans glade?

  10. #10
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    C'est à dire ? Lui donner une valeur par défaut ? Ou changer sa valeur ?
    Pour la valeur par défaut : oui.
    Pour changer la valeur : non. Il faut récupérer l'instance du widget et le manipuler avec les fonctions traditionnelles.

    Update:
    ok, je viens de relire le problème, bin ta colonne "Données utilisateur", ça ressemble fortement à user_data, donc tu devrais pouvoir y passer des données du moment qu'elles sont constantes. Je n'ai jamais utilisé cela, même les signaux je les connecte à la main, ça évite de modifier ton fichier glade si tu changes le nom de la callback dans ton code.

Discussions similaires

  1. [XML] [EXPAT] xml_parse et la gestion des événements...
    Par Herode dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 05/02/2006, 20h59
  2. Gestion des évènements Netscape 7.0
    Par RATHQUEBER dans le forum Autres langages pour le Web
    Réponses: 6
    Dernier message: 19/12/2005, 16h26
  3. Problème avec la gestion des événements
    Par CynO dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/10/2005, 10h07
  4. [JTable] gestion des événements
    Par soulhouf dans le forum Composants
    Réponses: 4
    Dernier message: 19/08/2005, 13h21
  5. Gestion des évènements lors d'un clique sur une image.
    Par yoghisan dans le forum Débuter
    Réponses: 7
    Dernier message: 23/06/2005, 19h04

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