Partage
  • Partager sur Facebook
  • Partager sur Twitter

les SIGNAL et les SLOT sur Qt

des macros étranges O_O

Sujet résolu
    14 novembre 2007 à 15:07:28

    Bonjour,
    J'ai essayé d'aller faire un tour sur les tuto de chez Qt en anglais et il y avait le tuto avec la fonction connect (le tuto 2) et là je m'interesse à la fonction connect :
    1. QObject::connect(&Quit,SIGNAL(clicked()),&app,SLOT(quit()));

    et je vois que la fonction clicked ne renvoie ... rien o_O donc pourquoi la mettre en paramètre de SIGNAL? je vais donc voir ce qu'est signal et la je vois que c'est une macro :
    1. #define SIGNAL(a)        "2"#a

    et pareil pour slot :
    1. #define SLOT(a)                "1"#a

    donc la fonction connect devrait ressmbler à ca :
    1. QObject::connect(&Quit,"2"#clicked(),&app,"1"quit());

    alors je ne vois pas du tout ce que veut dire "2"#clicked() ni "1"quit()!
    Quelqu'un peut me renseigner parce que ca m'interesse merci :)
    • Partager sur Facebook
    • Partager sur Twitter
      14 novembre 2007 à 15:14:14

      Ces macros transforment le paramètre en chaine de caratères et le 1/2 signifie si c'est un slot ou un signal.
      • Partager sur Facebook
      • Partager sur Twitter
        14 novembre 2007 à 15:22:17

        En faite ça écrit "2clicked()"?
        mais si la fonction connect() est censé associer les fonction entre elles, on peut retrouver une fonction dans la mémoire à partir de son nom sous forme de caractères? o_O
        • Partager sur Facebook
        • Partager sur Twitter
          14 novembre 2007 à 15:34:02

          Citation : thesimsone

          En faite ça écrit "2clicked()"?


          tu peux faire le test toi même, tu actives la console, tu inclues <QtDebug> et tu fais :
          1. qWarning() << SLOT(quit());


          Citation : thesimsone

          mais si la fonction connect() est censé associer les fonction entre elles, on peut retrouver une fonction dans la mémoire à partir de son nom sous forme de caractères? o_O


          pas par défaut, c'est tout le système interne de Qt qui le gère, regarde la fonction QObject::connect() dans C:\Qt\4.3.2\src\corelib\kernel\qobject.cpp ligne 2477
          • Partager sur Facebook
          • Partager sur Twitter
            14 novembre 2007 à 15:46:48

            merci beaucoup pour ces réponses qui ont été très rapides :)
            • Partager sur Facebook
            • Partager sur Twitter

            les SIGNAL et les SLOT sur Qt

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown