2015-01-31 2 views
0

Я пытался сделать QLCDNumber доступным, наследуя новый класс от него. Все, что он делает, это определить mouseReleaseEvent (QMouseEvent * e), посылая сигнал clicked(). Я думаю, что мой код правильный, но он не может найти сигнал (неразрешенный внешний символ на щелкнул() внутри 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

Ваша проблема заключается в том, что вы используете сигналы и/или слоты без использования компилятора метатегов Qt. Добавьте макрос Q_OBJECT в свой класс defi Определение и он будет работать:

//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

Вам нужно добавить макрос Q_OBJECT в свой класс декларации и запустить QMAKE ... может восстановить свой проект

Смежные вопросы