I was trying to make QLCDNumber clickable, by inheriting a new class from it. All it does is define a mouseReleaseEvent(QMouseEvent *e) sending a clicked() signal. I think my code is correct, but it can't find the signal (unresolved external symbol on clicked() inside 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 : I checked the SOURCES list for all my files to be correctly referenced in my project file, and I rerun qmake. No change.
Your problem is that you use signals and/or slots without using Qt's Meta Object Compiler. Add the Q_OBJECT
Macro to your class definition and it'll work:
//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
Don't forget to add the header file to the HEADERS
variable and rerun qmake before building again.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With