2016-05-16 7 views
0

Ich habe eine einfache C++ Qt Programm und ich bekomme undefined Referenz, wenn ich private Slots verwenden. Kann mir jemand helfen?qt privaten Steckplatz moc undefined Referenzfehler

Ich lerne GUI-Design mit Qt5 aus dem Buch C++ GUI Programming with Qt4. Ich verwende cmake mit MinGW Compiler in Windows.

Wenn ich jedoch aus der Header-Datei Q_OBJECT auskommentieren, kompiliert es ohne Fehler.

Dies ist die Header-Datei.

#ifndef MYWIDGETS_H 
#define MYWIDGETS_H 

#include <QDialog> 


class mywidgets : public QDialog 
{ 
    Q_OBJECT 
public: 

    mywidgets(); 
    void myDemoWidgets(); 
    void mySecondDemoWidgets(); 
private: 
    void findLayout(); 

private slots: 
    //void findClicked(); 
    void enableFindButton(const QString &text); 

signals: 
    void findNext(const QString &str, Qt::CaseSensitivity cs); 
    void findPrevious(const QString &str, Qt::CaseSensitivity cs); 
}; 

#endif // MYWIDGETS_H 

Dies ist der Fehler:

myClass_automoc.cpp:-1: error: undefined reference to mywidgets::enableFindButton(QString const&) 
+0

Können Sie zeigen uns, Implementierung ('.cpp') Datei, haben Sie erklären' Leere enableFindButton (const QString &text); 'in' .cpp' Datei als 'Leere mywidgets :: enableFindButton (const QString & Text) {}' Wenn Sie den Fehler loswerden, können Sie Code in den Körper des 'slots' setzen. – KernelPanic

+0

@KernelPanic Die Slot-Funktion wird in der Funktion connect() verwendet. ' connect (lineLayout, SIGNAL (textChanged (const QString &))), dies, SLOT (enableFindButton (const QString &))); ' – sutradhar

+0

) Bitte fügen Sie zusätzliche Informationen zurück in die Frage, anstatt in Kommentare. –

Antwort

0

Die undefined reference Fehler war, weil ich die void mywidgets::enableFindButton(const QString &text) { } Funktion in der (.cpp) Datei nicht definiert haben. Die Implementierung ist hier angegeben. void mywidgets::enableFindButton(const QString &text){ findButton->setEnabled(!text.isEmpty()); }

0

Können Sie zeigen uns, Implementierung (.cpp-Datei), hat erklären Sie void enableFindButton(const QString &text); in .cpp Datei als
void mywidgets::enableFindButton(const QString &text) { }
für Start. Sobald Sie den Fehler loswerden, können Sie Code in den Körper des Steckplatzes einfügen.

Verwandte Themen