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

Qt Discussion :

Problème de SLOT


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 33
    Par défaut Problème de SLOT
    Alors voila:

    J'essais juste de faire exécuter une fonction au clic d'un bouton.
    J'ai une erreur de compilation :
    Object::connect: No such slot QWidget::OnTraitement() in main.cpp:95

    pour mon code
    Je veux au clic du bouton B_Traitement que la fonction OnTraitement() se lance.
    Je comprends pas mon erreur !!!!!!!!

    le .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    class MyWidget : public QWidget
     {
     public:
         MyWidget(QWidget *parent = 0);
     
     public slots:
         void OnTraitement();
     
     private:
         QPushButton *B_Ouvrir_Fichier;
         QPushButton *B_Ouvrir_Rep;
         QPushButton *B_Traitement;
         QPushButton *B_Quitter;
         QPushButton *B_Clear;
         QPushButton *B_Sauvegarder;
         QPushButton *B_Afficher_Resultat;
         QLabel *L_Fichier;
         QLineEdit *LE_Masque_Recherche;
         QTextEdit *TE_Info;
     };
    Le .cpp

    Déclaration du bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    B_Traitement = new QPushButton(tr("Traitement"), this);
         B_Traitement->setGeometry(150, 20, 100, 25);
         B_Traitement->setFont(QFont("Times", 10));
         B_Traitement->setToolTip("Lancement du traitement");
         connect(B_Traitement, SIGNAL(clicked()), this, SLOT(OnTraitement()));
    et ma fonction toute bête (juste pour le test)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void MyWidget::OnTraitement()
     {
         QMessageBox msgBox(QMessageBox::Information,"", "", QMessageBox::Ok, this);
         msgBox.exec();
     }
    Je ne sais vraiment pas ce qui se passe, le programme se lance mais bien sur si j'appuie sur le bouton rien ne se passe.
    Merci d'avance pour vos explications...

  2. #2
    Membre confirmé

    Inscrit en
    Décembre 2009
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 170
    Par défaut
    Salut,
    Il faut ajouter le macro Q_OBJECT dans le header de ta classe.

  3. #3
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut
    Citation Envoyé par kmedghaith Voir le message
    Salut,
    Il faut ajouter le macro Q_OBJECT dans le header de ta classe.
    Et pourquoi pas lire : Qu'est-ce que Q_OBJECT ? de l'article De QObject aux méta-objets, une plongée au cœur des fondations de Qt par Amnell

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 33
    Par défaut
    merci pour vos réponse

    J'ai changé mon code mais j'ai un message d'erreur du compilateur

    Mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    class MyWidget : public QWidget
     {
     
    Q_OBJECT
     public:
         MyWidget(QWidget *parent = 0);
     
     public slots:
         void OnTraitement();
     
     private:
         QPushButton *B_Ouvrir_Fichier;
         QPushButton *B_Ouvrir_Rep;
         QPushButton *B_Traitement;
         QPushButton *B_Quitter;
         QPushButton *B_Clear;
         QPushButton *B_Sauvegarder;
         QPushButton *B_Afficher_Resultat;
         QLabel *L_Fichier;
         QLineEdit *LE_Masque_Recherche;
         QTextEdit *TE_Info;
     };
    Et le message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    C:/Documents and Settings/7511036V/Mes documents/QT/QTExample/debug/main.o:-1: error: In function `ZN8MyWidgetC2EP7QWidget':
     
    C:/Documents and Settings/7511036V/Mes documents/QT/QTExample/main.cpp:43: undefined reference to `vtable for MyWidget'
     
    C:/Documents and Settings/7511036V/Mes documents/QT/QTExample/debug/main.o:-1: error: In function `ZN8MyWidgetC1EP7QWidget':
     
    C:/Documents and Settings/7511036V/Mes documents/QT/QTExample/main.cpp:43: undefined reference to `vtable for MyWidget'
     
    debug/main.o(.text$_ZN8MyWidgetD1Ev[MyWidget::~MyWidget:-1: error: In function `ZN6QFlagsIN2Qt10WindowTypeEEC1ES1_':
     
    :-1: error: collect2: ld returned 1 exit status
    La ligne 43 dans mon .cpp c'est la construction de la fenetre principale.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MyWidget::MyWidget(QWidget *parent)
         : QWidget(parent)
     {                                                  // C'est la ligne 43
    ...........

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 33
    Par défaut
    C'est bon merci pour votre aide

    Apres avoir lu la doc sur Q_OBJECT, j'ai remanié mes fichiers et c'est impec.

    Encore merci

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

Discussions similaires

  1. Problème de slots
    Par Mougly01 dans le forum Qwt
    Réponses: 20
    Dernier message: 20/06/2009, 02h20
  2. Problème de slot-signal
    Par Fracass dans le forum Autres
    Réponses: 0
    Dernier message: 24/03/2009, 19h58
  3. Problème de SLOT&SIGNALS et autres .
    Par Asget dans le forum Débuter
    Réponses: 1
    Dernier message: 17/06/2008, 09h12
  4. Problème de slot avec un QLabel
    Par Zec Merquise dans le forum Qt
    Réponses: 8
    Dernier message: 15/12/2006, 13h23
  5. Problèmes de slots et signals
    Par femtosa dans le forum Qt
    Réponses: 4
    Dernier message: 13/12/2005, 09h39

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