Q:

Qt undefined reference to `vtable for Msnger'

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? 

A:

Your problem is that moc is not being run on your files, or its result is not getting linked.  
The golden rules are:

Make sure the Q_OBJECT macro is present in the definition of all QObject-derived classes.  
Make sure you declare your QObject-derived classes in your header files only.  
Make sure all of your header files are listed in your .pro file in the HEADERS= list.  
Run 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.