2012-05-28 8 views
0

누구든지이 오류를 설명 할 수 있습니까? 이 MOC에 발생하는 오류 인 것처럼 보인다 :Qt 4.7 기호를 찾을 수 없음 오류

Undefined symbols: 
make: Leaving directory `/Users/Dylan/Documents/programming/qt/Clock-build-desktop' 
    "ClockDelegate::ClockDelegate(QObject*)", referenced from: 
     AnalogClockDelegate::AnalogClockDelegate(QObject*)in AnalogClockDelegate.o 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 
make: *** [Clock.app/Contents/MacOS/Clock] Error 1 
The process "/usr/bin/make" exited with code 2. 
Error while building project Clock (target: Desktop) 
When executing build step 'Make' 

ClockDelegate :

#ifndef CLOCKDELEGATE_H 
#define CLOCKDELEGATE_H 

#include <QObject> 

class QTime; 
class QWidget; 

class ClockDelegate : public QObject 
{ 
    Q_OBJECT 

public: 

    explicit ClockDelegate(QObject *parent); 

    virtual void paintClock(QWidget *, QTime *) = 0; 
}; 

#endif // CLOCKDELEGATE_H 

AnalogClockDelegate :

#ifndef ANALOGCLOCKDELEGATE_H 
#define ANALOGCLOCKDELEGATE_H 

#include <QColor> 
#include <QPoint> 

#include "ClockDelegate.h" 

class QWidget; 

class AnalogClockDelegate : public ClockDelegate 
{ 
    Q_OBJECT 

public: 

    explicit AnalogClockDelegate(QObject *parent); 

    void paintClock(QWidget *, QTime *); 

private: 

    void setupClockHands(); 

    void drawClockSurface(QWidget *clockView, QTime *); 

    void drawHourComponent(QWidget *clockView); 

    void drawMinuteComponent(QWidget *clockView, QTime *); 

    void drawSecondComponent(QWidget *clockView, QTime *); 

    QPoint m_center; 
    QPoint m_hourHand[3]; 
    QPoint m_minuteHand[3]; 
    QPoint m_secondHand[2]; 

    QColor m_hourColor; 
    QColor m_minuteColor; 
    QColor m_secondColor; 
    QColor m_clockFaceColor; 
}; 

#endif // ANALOGCLOCKDELEGATE_H 

답변

4

나는 가정, 당신은 "공개"키워드를 놓치고있어 생각 ClockDelegate는 QObject입니다. 그렇지 않으면 QObject에서 파생되지 않으므로 Q_OBJECT를 사용할 수 없습니다.

class AnalogClockDelegate : public ClockDelegate 
+0

문제가있었습니다. 나는이 오류를 없애려고 1 시간 후에 내 머리카락을 찢어 버리기 직전이었다. 감사. – dtg

+0

다른 경우는 파생 된 객체가 네임 스페이스에 정의 된 경우입니다. 네임 스페이스도 작성해야합니다. 'public ns1 :: ns2 :: myClass' ... –

+0

나는 너무 빨리 말했습니다. 위의 오류에 대한 수정, 나는 "기호를 찾을 수 없습니다"오류가 발생 알아. moc가 ClockDelegate 또는 AnalogClockDelegate를 좋아하지 않는 것 같습니다. 나는 위를 편집 할 것이다. – dtg

관련 문제