Partage
  • Partager sur Facebook
  • Partager sur Twitter

Qtablewidget , probleme de signal

Sujet résolu
    5 avril 2008 à 16:08:06

    Bonjour,
    J'ai besoin pour mon application d'un tableau, enfin surtout une liste, mais le chapitres sur "comment chercher dans la docs" n'est pas encore sortit, donc je me debrouille comme je peux ^^ . Il me faut un tableau pour afficher des informations, et la je suis tomber sur QTablewidget, les info sont meme editable, ca change un peu ce que j'avais prevu mais je pense que ca m'ira =).
    Donc j'ai decider de mettre un bouton "sauvgarder", et je voudrais qu'il y aparaisse une etoile quand le contenue du tableau a changer.

    Donc j'ai cree le bouton :
    1. sauver = new QPushButton("sauvgarder  ", this);
    2.         sauver->move(450, 30);

    , j'ai cree un slot :

    1. void Entree_Sortie::sav()
    2. {
    3.     sauver->setText("Sauvgarder *");
    4. }


    Et j'ai voulu connecter pour chaque cellule, l'event cellChanged a ce slot. Donc j'ai fait un, enfin deux for :

    1. for (int i = 1 ; i < m_nbcheval ; i++)
    2.     {
    3.         for (int j = 1 ; j < 7 ; j++)
    4.         {
    5.             connect(tableau, SIGNAL(cellChanged(i, j)), this, SLOT(sav()));
    6.         }
    7.     }


    (oui, ce programme parle de cheveaux, pas que ce soit ma passion mais c'est pour simplifié la vie a un proche ^^ ).
    pour l'instant, m_nbcheval vaut 5, mais quand j'aurai fini ce nombre pourra atteindre plus de 30, ce sera en fonction de ce qui est lu dans un fichier.

    Maintenant, pas d'erreur a la compilation, mais a l'execution par contre ...
    Je lance le programme directement depuis la console (je suis sous linux)
    Object::connect: No such signal QTableWidget::cellChanged(i,j)

    Et ce message un bon paquet de fois, j'ai pas compter mais bon, je suis quasiment sur qu'il y en a m_nbcheval * 7 :D .
    Quelqu'un sait ou j'ai fait l'erreur ?
    • Partager sur Facebook
    • Partager sur Twitter
      5 avril 2008 à 16:10:11

      tu as inclus QObject je suppose? voir essayer avec QObject::connect....
      • Partager sur Facebook
      • Partager sur Twitter
        5 avril 2008 à 16:56:20

        ça marche pas mieux :( .
        J'ai inclu QtGui , parce qu'il me manquais un nom donc j'ai fait simple ...
        la compilation est pas tellement plus longue, et au pire je remplacerai plus tard.
        • Partager sur Facebook
        • Partager sur Twitter
          5 avril 2008 à 17:14:28

          il faut les mêmes paramètres dans le signal et dans le slot !!!
          et ce sont les types et non des variables/noms !!
          • Partager sur Facebook
          • Partager sur Twitter
            5 avril 2008 à 17:31:29

            ah oui tiens j'avais po vu! bien vu minirop!, pis faut definir ton signal aussi si tu veux un signal cellChanged(i,j)
            • Partager sur Facebook
            • Partager sur Twitter
              5 avril 2008 à 17:35:10

              Mh, j'ai rajouter les parametres dans le slot, par contre je comprend pas,
              ça veut dire que je peux pas faire cellChanged(i, j) ? j'ai pas le droit de mettre des variables ?

              et sfmaniaque, c'est un signal de QTableWidget, j'ai pas besoin de le definir, si ?

              EDIT : j'ai enlever i,j et mis int,int a la place, et ca marche. Je croyais que cellChanged etait specifique a chaque case, et non plus general !
              ca marche, merci !
              • Partager sur Facebook
              • Partager sur Twitter
                5 avril 2008 à 17:41:13

                si la fonction qui gere le signal est definie dans la doc par defaut avec les deux parametres, oui tu peux, sinon faut que tu fasses une surcharge pour le redeclarer avec les deux parametres, et il faudra egalement declarer ta fonction sav avec i et j!
                ton message d'erreur dit bien :No such signal QTableWidget::cellChanged(i,j)

                soit en francais: pas de sighal etc... je pencherais pour le fait qu'il n'existe pas...

                le plus simple serait encore de faire
                connect(tableau, SIGNAL(cellChanged()), this, SLOT(sav()));
                et de recuperer dans ton sav() le i et le j que tu auras mis dans une variable publique ou stocké dans une autre classe a laquelle tu as acces depuis la fonction sav()
                sinon je pense que tu seras obligé de passer par une surcharge... mais je suis loin d'etre un expert, je debute tout comme toi...

                d'ailleurs minirop, si jamais tu lis ce message, tu pourrais me donner une explication sur mon topic SQL stp?

                EDIT:
                oui c'est un signal j'ai un peu regardé!! j'ai dit n'importe quoi tu n'as pas besoin de le redefinir effectivement...
                • Partager sur Facebook
                • Partager sur Twitter

                Qtablewidget , probleme de signal

                × 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