Почему эта компиляция (ссылка) не выполняется с макросом Q_OBJECT?

Я сделал прототип проекта с PyQt и заставил его работать там, сейчас я пытаюсь преобразовать его в C ++ и у меня возникли некоторые проблемы.

Если я не помещаю макрос Q_OBJECT, он компилируется и работает, но если я закомментирую его, я получаю следующие ошибки:

Undefined symbols:
  "vtable for MapView", referenced from:
      MapView::~MapView()in mapview.o
      MapView::~MapView()in mapview.o
      MapView::MapView(QObject*)in mapview.o
      MapView::MapView()in mapview.o
  "MapView::staticMetaObject", referenced from:
      MapView::MapView(QObject*)in mapview.o
      MapView::MapView()in mapview.o

Вот заголовок:

#ifndef MAPVIEW_H
#define MAPVIEW_H

#include <QtGui>
#include <QObject>

class MapView : public QGraphicsScene
{
    //Q_OBJECT

public:
    MapView();
    explicit MapView(QObject *parent = 0);
    QGraphicsPixmapItem *mappixmap;
    ~MapView();

private:
    bool dragging;
    float offsetX, offsetY, downoffsetX, downoffsetY;

protected:
    void mousePressEvent(QGraphicsSceneMouseEvent *event);
    void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
    void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);

};

#endif // MAPVIEW_H

Вторичный вопрос: произойдут ли плохие вещи, если я просто опущу здесь макрос Q_OBJECT?

И да, я знаю, что глупо называть QGraphicsScene «представлением».

Ответы на вопрос(2)

Ваш ответ на вопрос