Ajuda com Qt?

Eu preciso implementar uma interface que faz desenhos de polígonos com cliques do mouse. Pra isso eu coloquei um Widget na MainWindow e o promovi para outra classe GraphicsPainter que eu havia implementado anterioremente alterando os comportamentos do mouse, como abaixo:

#include "graphicspainter.h"
#include "ui_graphicspainter.h"

#include <QPainter>
#include <QMouseEvent>

GraphicsPainter::GraphicsPainter(QWidget *parent) : QWidget(parent), ui(new Ui::GraphicsPainter)
{
//Fill the background color
setAutoFillBackground(true);
setBackgroundRole(QPalette::Base);

bDraw = false;
bLeftClick = false;
bMove = false;
setMouseTracking(true);
}

void GraphicsPainter::SetDraw(bool bDraw)
{
this->bDraw = bDraw;
pointList.clear();
}

//Reimplement paintEvent
void GraphicsPainter::paintEvent(QPaintEvent *)
{
QPainter painter(this);

if(bDraw)
{

   painter.setPen(QColor(red,green,blue));
   QVector<QLineF> lines;
   for(int i = 0; i<pointList.size()-1; i++)
   {
       QLineF line(QPointF(pointList[i].x(), pointList[i].y()), QPointF(pointList[i+1].x(), pointList[i+1].y()));
       lines.push_back(line);
   }
   if(bMove&&pointList.size()>0)
   {
       QLineF line(QPointF(pointList[pointList.size()-1].x(), pointList[pointList.size()-1].y()), movePoint);
       lines.push_back(line);
   }
   painter.drawLines(lines);
}
}

//Press
void GraphicsPainter::mousePressEvent(QMouseEvent *e)
{
if(bDraw)
{
    if(!bLeftClick)
    {
        pointList.clear();
        bLeftClick = true;
    }
}
//qDebug()<<"Press";
}

//mobile
void GraphicsPainter::mouseMoveEvent(QMouseEvent *e)
{
if(bDraw&&bLeftClick)
{
    movePoint = e->pos();
    bMove = true;
    this->update();
}
//qDebug()<<"Move";
}

//release
void GraphicsPainter::mouseReleaseEvent(QMouseEvent *e)
{
if(bDraw&&bLeftClick)
{
    pointList.push_back(QPointF(e->x(), e->y()));
    bMove = false;
    this->update();
}
//qDebug()<<"Release";
}

//Double click
void GraphicsPainter::mouseDoubleClickEvent(QMouseEvent *event)
{
if(bDraw)
{
    bLeftClick = false;
    pointList.push_back(pointList[0]);
    this->update();
    singalDrawOver();
}
//qDebug()<<"DoubleClick";
}

O problema é que, por mais que a MainWindows consiga acessar o widget, ele não responde aos comandos do mouse.

Eu sou novo no Qt. Estou esquecendo de implementar alguma coisa? Fazendo algo errado?