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

Discussion :

Erreur de connexion : no matching function for call to 'Widget::connect'

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    programmation
    Inscrit en
    Janvier 2020
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : programmation

    Informations forums :
    Inscription : Janvier 2020
    Messages : 69
    Points : 16
    Points
    16
    Par défaut Erreur de connexion : no matching function for call to 'Widget::connect'
    bonjour
    je suis sur qt et je voudrais faire en sorte que l'lorsque on clique sur un bouton ça lance une fonction dans une autre classe.
    j'ai donc fait une connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect(&tasckbuton, &QPushButton::pressed, &listtask[size], &task::presentation);
    mais je me prend l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ' no matching function for call to Widget::connect(QPushButton**, void (QAbstractButton::*)(), task**, void (task::*)())'
    ..\todoliste\widget.cpp: In member function 'void Widget::newtask(QString)':
    ..\todoliste\widget.cpp:27:85: error: no matching function for call to 'Widget::connect(QPushButton**, void (QAbstractButton::*)(), task**, void (task::*)())'
         connect(&tasckbuton, &QPushButton::pressed, &listtask[size], &task::presentation);
                                                                                         ^
    ca fait une journée que je suis dessus et je vous demande donc de l'aide
    pouvez vous m'aider

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    La fonction connect() attend des (simples) pointeurs vers les objets, or selon le message d'erreur toi tu passes des doubles pointeurs :
    Widget::connect(QPushButton**, void (QAbstractButton::*)(), task**, void (task::*)())
    Les deux & correspondants devant tasckbuton et listtask[size] sont donc à supprimer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect(tasckbuton, &QPushButton::pressed, listtask[size], &task::presentation);
    Sinon sans contexte difficile d'être sûr, mais l'accès à [size] est quelque peu suspect et laisse supposer un accès hors limites.

  3. #3
    Membre à l'essai
    Homme Profil pro
    programmation
    Inscrit en
    Janvier 2020
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : programmation

    Informations forums :
    Inscription : Janvier 2020
    Messages : 69
    Points : 16
    Points
    16
    Par défaut
    bonjour je teste ca des que je peut mais ca a l'air de marché
    et voici le code qui défini size j'ai fait une variable pour éviter d'appeler tasklist.size a chaque fois et donc pour que ce soit pus rapide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        listtask.push_back(new task(name));
        int size (listtask.size());

  4. #4
    Membre à l'essai
    Homme Profil pro
    programmation
    Inscrit en
    Janvier 2020
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : programmation

    Informations forums :
    Inscription : Janvier 2020
    Messages : 69
    Points : 16
    Points
    16
    Par défaut
    bonjour ca génère encore des erreur
    Nom : Capture d’écran 2021-04-08 193105.png
Affichages : 587
Taille : 15,5 Ko

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par eneediorio Voir le message
    et voici le code qui défini size [...]
    Si tu affectes size après l'ajout de l'élément, alors je confirme il y a dépassement.
    Tu n'as pas besoin de cette variable, tu as une fonction membre toute faite pour accéder au dernier élément : .back().

    Pour ce qui est de la nouvelle erreur, cela présuppose que ta classe task n'hérite pas de QObject. Or c'est un des requis pour utiliser les signaux / slots.

  6. #6
    Membre à l'essai
    Homme Profil pro
    programmation
    Inscrit en
    Janvier 2020
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : programmation

    Informations forums :
    Inscription : Janvier 2020
    Messages : 69
    Points : 16
    Points
    16
    Par défaut
    bonjour
    j'ai donc rajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    class task: public QObject
    {
        Q_OBJECT
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    class Widget : public QWidget, public task
    {
    Q_OBJECT
    mais ca me donne ca :Nom : Capture d’écran 2021-04-09 112726.png
Affichages : 575
Taille : 25,7 Ko

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/04/2016, 20h36
  2. Réponses: 7
    Dernier message: 14/03/2014, 21h50
  3. No matching function for call to 'Joueur::Joueur'
    Par Go'Gaule dans le forum Débuter
    Réponses: 4
    Dernier message: 02/07/2011, 07h50
  4. Réponses: 8
    Dernier message: 09/07/2010, 16h02
  5. no matching function for call
    Par pimousse280187 dans le forum Linux
    Réponses: 1
    Dernier message: 06/06/2009, 21h08

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