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 :

comment conecter un bouton à une fonction?


Sujet :

GTK+ avec C & C++

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 187
    Points : 97
    Points
    97
    Par défaut comment conecter un bouton à une fonction?
    Bonjour,
    voici mon 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
    47
    48
    49
    50
    51
    52
    #include<libglademm.h>
    #include<gtkmm.h>
    #include<iostream>
     
    Gtk::Window* p_w = 0;
    Gtk::Button* p_b = 0;
     
    void monsignal();
     
    int main(int argc, char ** argv)
    {
        Gtk::Main kit(argc, argv);
        //Load Glade file and instantiate its widgets
        Glib::RefPtr<Gnome::Glade::Xml> refXml;
     
        #ifdef GLIBMM_EXCEPTIONS_ENABLED
        try
        {
            refXml = Gnome::Glade::Xml::create("winglade-test.glade");
        }
        catch(const Gnome::Glade::XmlError& ex)
        {
            std::cerr<< ex.what()<<std::endl;
        }
        #else
        std::auto_ptr<Gnome::Glade::XmlError> error;
        refXml = Gnome::Glade::Xml::create("winglade-test.glade","","",error);
        if(error.get())
        {
            std::cerr<<error->what()<<std::endl;
            return 1;
        }
        #endif
     
        //Get the Glade instantiate window
     
        refXml->get_widget("window1", p_w);
        refXml->get_widget("button1", p_b);
     
        if (p_w && p_b)
        {
            std::cout<<"Tout va bien"<<std::endl;
            p_b->clicked().connect(sigc::ptr_fun(monsignal));//la ligne qui cloche
            kit.run(*p_w);
        }
        return 0;
    }
     
    void monsignal()
    {
        std::cout<<"hi hi hi"<<std::endl;
    }
    et voici ce que me retourne le compilateur:
    /home/.../main.cc||In function `int main(int, char**)`:
    /home/.../main.cc|43|erreur: invalid use of `void`
    ||=== Build finished: 1 errors, 0 warnings ===|
    Voila 3 4 jours que je tache de reproduire des exemples de code trouvés dans la doc et sur le net et ceci est mon meilleur résultat. Qu'est-ce qui ne va pas?

  2. #2
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 287
    Points : 208
    Points
    208
    Par défaut
    si tu souhaites connecter une fonction à un signal, ta fonction doit respecter un certain prototype. regarde la doc de gtk

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 187
    Points : 97
    Points
    97
    Par défaut
    Merci pour la réponse....mais...j'ai l'étrange impréssion que ça ne m'avance pas du tout. Ça fait déjà plusieurs jours que je cherche sans savoir Où chercher.

  4. #4
    Membre expérimenté
    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
    Points : 1 633
    Points
    1 633
    Par défaut
    Je dirais http://gtkmm.org/docs/gtkmm-2.4/docs...481cdfc5ebf512 mais ça va pas t'avancer vu que ton proto a l'air de coller :-/

  5. #5
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 287
    Points : 208
    Points
    208
    Par défaut
    Citation Envoyé par teuf13 Voir le message
    Je dirais http://gtkmm.org/docs/gtkmm-2.4/docs...481cdfc5ebf512 mais ça va pas t'avancer vu que ton proto a l'air de coller :-/
    désolé, je ne connaissais pas !
    je pensais qu'il y avait une certaine similitude entre le c et le c++...

  6. #6
    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
    Bonjour,

    D'après les exemples que j'ai pu trouver, c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p_b->signal_clicked().connect(sigc::ptr_fun(monsignal));
    La méthode clicked() sert probablement à envoyer le signal

  7. #7
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 187
    Points : 97
    Points
    97
    Par défaut
    c'est exactement ça!!
    Bizarrement, le nom du signal dans glade est clicked.
    J'aimerais bien trouver un bon tutoriel sur glade-3. Si la documentation était plus fournie, les choses seraient allées plus vite.
    Merci!

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

Discussions similaires

  1. comment passer un tableau à une fonction javascript
    Par beegees dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/03/2009, 19h48
  2. Comment creer et appeler une fonction sql..
    Par denissay dans le forum Langage SQL
    Réponses: 7
    Dernier message: 05/01/2008, 22h28
  3. [EXCEL - VBA] Plusieurs boutons = une fonction
    Par Michocs17141 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/11/2007, 05h27
  4. [VB2005] Comment créer un bouton double fonction
    Par crashdown31 dans le forum Windows Forms
    Réponses: 13
    Dernier message: 18/09/2006, 08h14
  5. [Bouton] Comment déplacer un bouton en fonction du scrolling
    Par Kylen dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/08/2005, 12h25

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