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

C++ Discussion :

parametre de fonction dans un .connect (click bouton)


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 13
    Points : 8
    Points
    8
    Par défaut parametre de fonction dans un .connect (click bouton)
    Bonjour,

    Mon problème est le suivant :
    je dois utiliser une librairie déjà concue (et toujours en développement) pour créer une interface graphique en OpenGL
    je crée des boutons de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    bt1 = new vr::PushButton(window);
    	bt1->clicked.connect(this,&Maki::onBtClickEvent());
    J'aimerai savoir s'il est possible de passer un paramètre à ma fonction "onBtClickEvent" qui correspondrai à mon bouton (les boutons se créeront selon les données recu d'un serveur) il me faudrai juste un identifiant (nombre/nom) pour savoir quel bouton a été cliqué (sachant que tous les boutons appeleront la même fonction !)

    Merci de votre attention et de vos réponses !
    Mitox

  2. #2
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    Il faudrait que tu modifie la méthode connect tel que:

    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
     
    class [type_de vr::PushButton::clicked]
    {
       void (*m_pCallback)(void *pParam );
       void *m_pParameter;
    public:
       void OnClick();
       void connect( [?]*, void (*)(void*), void * );
    };
     
    void [type_de_vr::PushButton::clicked]::connect( [?]*, void (*callback)(void *), void *param )
    {
       m_pCallBack = callback;
       m_pParameter = param;
    }
     
    void [type_de_vr::PushButton::clicked]::OnClick()
    {
       m_pCallBack( m_pParameter );
    }
    Puis que tu utilises ça comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class Maki
    {
    public:
       static void onBtClickEvent( void* );
    };
     
    void Maki::onBtClickEvent( void *param )
    {
       int *parameter = (int*)param;
    }
     
    int parameter = 2;
    bt1->clicked.connect(this,&Maki::onBtClickEvent, (void*)&parameter);
    J'ai pas testé le code mais ça devrait fonctionner

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 63
    Points : 77
    Points
    77
    Par défaut
    Je sais qu'en utilisant les bibliothèques boost::signal et boost::bind, ça marche. Au niveau code, ça ressemble à peu près à ça, faudrait regarder la documentation d'un peu plus près.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    button = new PushButton(window);
    button->clicked.connect(boost::bind(&Maki::onBtClickEvent(), this, button));
    clicked est, ici, un objet de type boost::signal et la fonction onBtClickEvent prend un PushButton* en paramètre.


    Et perso, je trouve pas ça très élégant les void*...

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    julien : hm en fait je suis pas censé toucher à la librairie que j'utilise c'est en parti ca mon problème (c'est assez particulier.. je suis étudiant, j'ai pas les droits j'en passe et des meilleurs) :/ mais merci !

    elendil : je verrai pour la bibliothèque boost des que je peux ! merci pour l'info

    toute autre proposition m'empechant d'avoir un débat avec l'administrateur et compagnie est acceptée !

    en attendant bon week end a tous, je vous tiendrai au courant

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/04/2009, 10h59
  2. mettre un parametre d'une fonction dans un request.setAttribute
    Par john_wili dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/03/2009, 14h34
  3. passer une fonction dans un parametre d'une propriété de classe
    Par CAML dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 06/08/2006, 19h52
  4. Enchainer des fonctions dans un onclick d'un bouton
    Par jpg dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/10/2004, 16h51

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