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

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    janvier 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Collégien
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : janvier 2020
    Messages : 26
    Points : 0
    Points
    0
    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
    Modérateur

    Avatar de Winjerome
    Homme Profil pro
    Inscrit en
    septembre 2009
    Messages
    10 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : septembre 2009
    Messages : 10 749
    Points : 65 639
    Points
    65 639
    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.
    Avant de poser votre question : FAQ, Tutoriels et recherche sur le forum
    Une erreur ? Messages d'erreur et avertissements
    "Ça ne marche pas" n'apporte aucune information utile permettant de vous aider. Expliquez clairement votre problème (erreurs entières, résultat souhaité vs obtenu...).
    En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
    L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
    Mes extensions FireDVP (Firefox), ChroDVP (Chrome) : suivi des nouveaux messages, boutons/raccourcis et bien plus !

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    janvier 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Collégien
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : janvier 2020
    Messages : 26
    Points : 0
    Points
    0
    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
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    janvier 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Collégien
    Secteur : Tourisme - Loisirs

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

  5. #5
    Modérateur

    Avatar de Winjerome
    Homme Profil pro
    Inscrit en
    septembre 2009
    Messages
    10 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : septembre 2009
    Messages : 10 749
    Points : 65 639
    Points
    65 639
    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.
    Avant de poser votre question : FAQ, Tutoriels et recherche sur le forum
    Une erreur ? Messages d'erreur et avertissements
    "Ça ne marche pas" n'apporte aucune information utile permettant de vous aider. Expliquez clairement votre problème (erreurs entières, résultat souhaité vs obtenu...).
    En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
    L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
    Mes extensions FireDVP (Firefox), ChroDVP (Chrome) : suivi des nouveaux messages, boutons/raccourcis et bien plus !

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    janvier 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Collégien
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : janvier 2020
    Messages : 26
    Points : 0
    Points
    0
    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 : 54
Taille : 25,7 Ko

  7. #7
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    25 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 25 935
    Points : 181 520
    Points
    181 520
    Par défaut


    QObject et l'héritage multiple, ce n'est pas une histoire d'amour… Aux dernières nouvelles, c'était surtout au niveau de la génération de code (moc) que ça coinçait.

    Ici, tu ne peux pas hériter à la fois de Task (qui hérite de QObject) et de QWidget (qui hérite aussi de QObject).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    janvier 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Collégien
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : janvier 2020
    Messages : 26
    Points : 0
    Points
    0
    Par défaut
    et Ducoup la solution serrais de supprimer ne pas inclure QObject dans widget ?

  9. #9
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    25 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 25 935
    Points : 181 520
    Points
    181 520
    Par défaut
    Plutôt, de ne pas hériter de QWidget. Par contre, la macro Q_OBJECT doit rester.

    Sinon, que cherches-tu à faire avec ce mécanisme d'héritage multiple ? Avec plus de détails, on pourrait voir pour une solution qui utilise de la composition plutôt que de l'héritage.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    janvier 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Collégien
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : janvier 2020
    Messages : 26
    Points : 0
    Points
    0
    Par défaut
    bonjour
    je crée une to do liste je me suis donc fait mon interface et dans une classe de tache.
    les tache on donc une fonction pour s'afficher elle utilise un slot de l'interface.
    mais l'interface doit donc pouvoir crée des tache. donc l'interface hérite de task et task peut donc afficher des élément dans l'interface

  11. #11
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    25 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 25 935
    Points : 181 520
    Points
    181 520
    Par défaut
    Tu devrais te pencher sur deux concepts de programmation orientée objet : le SRP (principe de responsabilité unique) et le MVC (modèle-vue-contrôleur)

    A priori, une tâche n'est qu'un gros paquet de données, qui doit pouvoir être synchronisé avec une base de données ou autre (M dans MVC). Ensuite, tu as besoin d'une petite couche pour faciliter l'affichage de ces données dans ton interface graphique (V dans MVC). Fais donc deux classes : par exemple, Task (qui n'hérite pas de grand-chose) et TaskWidget (qui hérite de QWidget).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    janvier 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Collégien
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : janvier 2020
    Messages : 26
    Points : 0
    Points
    0
    Par défaut
    heu...
    je ne comprend pas

  13. #13
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    25 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 25 935
    Points : 181 520
    Points
    181 520
    Par défaut
    Ta réponse est un peu courte . Que ne comprends-tu pas ? Sinon, un peu de lecture pour toi : https://doc.qt.io/qt-5/model-view-programming.html (MVC) et https://en.wikipedia.org/wiki/Single...lity_principle (SRP).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  14. #14
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    janvier 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Collégien
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : janvier 2020
    Messages : 26
    Points : 0
    Points
    0
    Par défaut
    je lis tout ca et je reviens vers vous

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    janvier 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Collégien
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : janvier 2020
    Messages : 26
    Points : 0
    Points
    0
    Par défaut
    donc si je comprend bien
    on a la classe task qui a toute les informations sur la tâche
    on a la classe taskwidjet qui elle permet d'organiser les données elle erite donc de task
    on a notre interface graphique qui elle affiche les taskwidjet elle hérite donc de taskwidjet et de task pour pouvoir crée de nouvelle tâche

    edit
    je pensait deja avoir mon model : task
    et ma vue : mon interface

  16. #16
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    janvier 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Collégien
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : janvier 2020
    Messages : 26
    Points : 0
    Points
    0
    Par défaut
    up please

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