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

 C++ Discussion :

undefined reference to `MainWindow::on_pushButton_color_clicked()'


Sujet :

C++

  1. #1
    Membre régulier Avatar de Space23
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 185
    Points : 88
    Points
    88
    Par défaut undefined reference to `MainWindow::on_pushButton_color_clicked()'
    Bonjour,

    J'ai importer un projet source sur QT qui possède une interface graphique. Cependant celle-ci pose problème lors de la compile (voir erreur ci-dessous) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [......]\debug\moc_mainwindow.cpp:83: erreur : undefined reference to `MainWindow::on_pushButton_color_clicked()'
     
    error: ld returned 1 exit status
    Cette erreur se produit dans le code généré de l'interface graphique (je pense qu'il s'agit de ça ) :

    MainWindow (genere) :
    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
    void MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
    {
        if (_c == QMetaObject::InvokeMetaMethod) {
            MainWindow *_t = static_cast<MainWindow *>(_o);
            switch (_id) {
            case 0: _t->on_pushButton_color_clicked(); break;
            case 1: _t->processColorDetection(); break;
            case 2: _t->on_verticalSlider_Threshold_valueChanged((*reinterpret_cast< int(*)>(_a[1]))); break;
            case 3: _t->setColor(); break;
            case 4: _t->setImage(); break;
            default: ;
            }
        }
    }
    Voici le code de la classe mainwindow.cpp (en partie) :
    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
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        //select color
        connect(ui->pushButton_color, SIGNAL(clicked()), this, SLOT(setColor()));
        connect(ui->actionChoose_Color, SIGNAL(triggered()), this, SLOT(setColor()));
    
        //open image
        connect(ui->pushButton_openImage, SIGNAL(clicked()), this, SLOT(setImage()));
        connect(ui->actionOpen_Image, SIGNAL(triggered()), this, SLOT(setImage()));
    
        //process Color Detection
        connect(ui->pushButton_process, SIGNAL(clicked()), this, SLOT(processColorDetection()));
        connect(ui->actionProcess, SIGNAL(triggered()), this, SLOT(processColorDetection()));
    
    }
    Et enfin la définition du widget dans qt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     <widget class="QPushButton" name="pushButton_color">
        <property name="geometry">
         <rect>
          <x>10</x>
          <y>40</y>
          <width>81</width>
          <height>23</height>
         </rect>
        </property>
        <property name="text">
         <string>Select Color</string>
        </property>
       </widget>
    Apparemment il n'arrive pas à faire le lien entre la définition du signal "click" dans la classe .cpp et la méthode on_click sur l'interface graphique généré?

    Comment puis-je résoudre ce problème?

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

    Citation Envoyé par Space23 Voir le message
    Voici le code de la classe mainwindow.cpp (en partie) :
    Qui contient aussi la définition de MainWindow::on_pushButton_color_clicked() ?

    Remarque : cette fonction est un slot et devrait plutôt porter un nom en rapport avec ce quelle fait et non le signal que tu lui connectes.

  3. #3
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 696
    Points : 2 440
    Points
    2 440
    Par défaut
    Bonsoir.

    - Est-ce que on_pushButton_color_clicked est bien déclaré dans le .h et défini dans le .cpp (avec le MainWindow:: devant) ?
    - As-tu essayé de nettoyer puis recompiler le projet ?
    - Est-ce que recompiler l'ui va enlever l'erreur ?

    Si tu utilises Qt Creator, il arrive que la compilation de l'ui ne se fasse plus, toutes les modifications que tu y fais ne sont plus prises en compte.
    Ça m'est déjà arrivé pour une raison qui m'échappe .

    Pour info, la connexion se fait automatiquement dans le fichier ui_mainwindow.h qui contient une ligne QMetaObject::connectSlotsByName(MainWindow);
    Je fais appel aux esprits de Ritchie, Kernighan, Stroustrup et Alexandrescu
    Donnez moi la force, donnez moi le courage de coder proprement !

    « Ça marche pas » n'est PAS une réponse convenable, merci de détailler le souci en fournissant l’environnement, le code source, les commandes et les messages d'erreur.

    Ce club possède également un clavardage, on y trouve quelques perles entre deux sessions d'entraides.

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

Discussions similaires

  1. winsock.h : undefined reference...
    Par abraxas dans le forum Dev-C++
    Réponses: 14
    Dernier message: 06/08/2012, 13h42
  2. Undefined reference compilation réseau
    Par Ren97 dans le forum Dev-C++
    Réponses: 11
    Dernier message: 08/03/2005, 09h46
  3. Compilation de xmms : undefined reference to...
    Par Michaël dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 04/02/2005, 19h05
  4. undefined reference to `xmlParseFile'
    Par Clemaster dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 25/06/2004, 20h38
  5. g++ : undefined reference to ...
    Par le_barbu dans le forum Autres éditeurs
    Réponses: 16
    Dernier message: 14/05/2004, 07h23

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