I get this error
/.../mainwindow.o:-1: In function `MainWindow::MainWindow(QWidget*)':
/.../mainwindow.cpp:-1: Chyba:undefined reference to `vtable for Msnger'
and i dont understand why. Only problems i found causing this message are declaration without definition and i dont see any of theese in my code.
here is class Msnger msnger.h:
#include <QObject>
class Msnger : public QObject
{
Q_OBJECT
public:
Msnger() {};
~Msnger() {};
void sendOn();
signals:
void ton() {};
};
msnger.cpp:
#include "msnger.h"
void Msnger::sendOn()
{
emit ton();
}
Msnger is supposed to send message to my Mainwindow
in constructor of mainWindow:
msn = new Msnger();
connect(msn, SIGNAL(ton()),this, SLOT(on()));
where msn is:
public: Msnger * msn
can you pls explain to me what's causing this and how can I fix it?
Your problem is that moc
is not being run on your files, or its result is not getting linked.
The golden rules are:
Q_OBJECT
macro is present in the definition of all QObject
-derived classes. QObject
-derived classes in your header files only. HEADERS=
list. qmake
every time you add Q_OBJECT
to one of your classes or modify your .pro
file.Addendum:
signals:
void ton() {};
Do not implement a signal. moc
will implement it for you.