2015-01-31 3 views
0

QLCDNumber에서 새 클래스를 상속하여 클릭 할 수있게하려고했습니다. 모든 것은 clicked() 신호를 보내는 mouseReleaseEvent (QMouseEvent * e)를 정의합니다. 나는 내 코드가 정확한지 생각하지만, 그것은 신호 (mouseReleaseEvent()신호에 미해결 된 외부 기호

//myLCDNumber.h 
#ifndef MYLCDNUMBER_H 
#define MYLCDNUMBER_H 

#include <QLCDNumber> 
#include <QMouseEvent> 

class myLCDNumber : public QLCDNumber 
{ 
    public: 
     myLCDNumber(uint numDigits); 
     ~myLCDNumber(); 
     void mouseReleaseEvent(QMouseEvent *e); 

    signals: 
     void clicked(void); 
}; 

#endif // MYLCDNUMBER_H 

//myLCDNumber.cpp 
#include "mylcdnumber.h" 

    myLCDNumber::myLCDNumber(uint numDigits):QLCDNumber(numDigits){} 

    myLCDNumber::~myLCDNumber(){} 

    void myLCDNumber::mouseReleaseEvent(QMouseEvent *e) 
    { 
     qDebug("Click check"); 
     if (e->button() == Qt::LeftButton) 
      emit myLCDNumber::clicked(); 
    } 

EDIT 내부) (클릭에 확인되지 않은 외부 기호 찾을 수 없습니다 : 내 모든 파일을 제대로 참조 할 수 있도록 내가 소스 목록을 확인을 내 프로젝트 파일에, 나는 qmake를 다시 실행합니다. 변경 사항 없음.

+0

Qt의 하위 클래스에서 신호와 슬롯을 사용하려면이 매크로없이 Q_OBJECT 매크로를 추가하는 것을 잊지 마십시오. 신호와 슬롯을 사용할 수 없습니다. –

답변

1

당신의 문제가 당신의 프로젝트를 다시 빌드하고 ... 클래스 선언에 Q_OBJECT 매크로를 추가하고 qmake를 실행해야/또는 Qt의 Meta Object Compiler를 사용하지 않고 슬롯. Q_OBJECT 매크로를 클래스에 추가하십시오. defi nition과 작동합니다 :

//myLCDNumber.h 
#ifndef MYLCDNUMBER_H 
#define MYLCDNUMBER_H 

#include <QLCDNumber> 
#include <QMouseEvent> 

class myLCDNumber : public QLCDNumber 
{ 
    Q_OBJECT 

    public: 
     myLCDNumber(uint numDigits); 
     ~myLCDNumber(); 
     void mouseReleaseEvent(QMouseEvent *e); 

    signals: 
     void clicked(void); 
}; 

#endif // MYLCDNUMBER_H 

다시 구축하기 전에 HEADERS 변수를 다시 실행 qmake를에 헤더 파일을 추가하는 것을 잊지 마십시오.

0

당신은 어쩌면 당신은 신호를 사용하는 것이

관련 문제