Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Qt]Un SIGNAL émit bizarrement

comme une boucle ?!?

Sujet résolu
    19 juin 2008 à 10:16:34

    Bonjour à tous!

    J'ai un petit soucis avec un signal qui est émit de facon étrange!

    Je vous explique ce que je veux faire : quand l'utilisateur clique sur le bouton ouvrir, on lance la methode trigouvrir() qui ouvre une boite de dialogue pour ouvrir un fichier existant, puis, une fois que c'est fait, un signal est émit (runOuvertureTexte) qui se connect au Slot ouvertureTexte() qui met à jour mon affichage du SDI!

    Le problème est le suivant : la première fois que je clique sur le bouton, rien ne se passe, la 2eme fois, ca s'ouvre comme il faut, la 3eme fois, ca s'ouvre 2 fois, etc etc! Je ne comprends pas le probleme!

    Je vous mets la partie du code qui emet et recoit, le .h, et en secret, l'ensemble du code du .cpp!

    J'ai enlevé le code pour pas me faire piquer mon truc ^^ niarf! :diable:


    Voila, j'espere que vous trouverez ce qui ne marche pas!
    • Partager sur Facebook
    • Partager sur Twitter
      19 juin 2008 à 11:33:13

      Pourquoi tu met ça dans la même fonction ? :

      emit runOuvertureTexte();
      //QMessageBox::information(this, "Titre de la fenêtre", "Ouverture du fichier");//Ce message s'affiche
      
      connect(this , SIGNAL(runOuvertureTexte()) , this , SLOT(ouvertureTexte()));
      


      Tu devrais obtenir la même chose avec juste :

      ouvertureTexte();
      


      Tu inclus deux headers et tu n'en fourni qu'un, essaye de donner tout ton code (ou mieux un code simplifié), ce seras plus facile pour t'aider.

      • Partager sur Facebook
      • Partager sur Twitter
        19 juin 2008 à 11:51:12

        je ne comprends pas ce que tu veux dire... j'emet le signal runOuvertureTexte, et je le connecte au slot ouvertureTexte!

        et le code y est en secret, en entier!
        • Partager sur Facebook
        • Partager sur Twitter
          19 juin 2008 à 12:29:30

          Citation

          je ne comprends pas ce que tu veux dire... j'emet le signal runOuvertureTexte, et je le connecte au slot ouvertureTexte!



          Oui, mais tu le fais dans la même fonction, autant appeler ta fonction ouvertureTexte() directement.

          Citation

          et le code y est en secret, en entier!



          Il manque "FenVisu.h", non? o_O
          • Partager sur Facebook
          • Partager sur Twitter
            19 juin 2008 à 12:32:29

            Bonjour,
            Je ne suis pas un pro de la connections des slots, mais tu crée une nouvelle connection de slot à chaque appel de ta fonction FenPrincipale::trigOuvrir().

            ensuite, comme le fait remarquer HammHetfield, ca ne sers a rien de connecter ce signal à ce slot, il suffit d'appeler directement ta fonction à la fin. Les slots servent eux à connecter des évènements potentiels à leur action, et non à lancer une fonction à partir d'une autre.


            • Partager sur Facebook
            • Partager sur Twitter
              19 juin 2008 à 22:20:48

              ah, c'est vrai que je me suis entêté pour emettre un signal, alors que je pourrais largement lancer la fonction!

              Je vais voir si ca améliore la chose, et je rajoute les FenVisu.cpp et .h!

              Bon ben je ne rajoute pas, vu que ca fonctionne parfaitement en appellant a fonction directement! merci!
              • Partager sur Facebook
              • Partager sur Twitter

              [Qt]Un SIGNAL émit bizarrement

              × 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