I'm trying to subclass
What you describe is indeed the documented behavior. If you look at the source code, you will see that QWidget::event only calls mousePressEvent if the widget is enabled.
As a solution, you may override event instead of mousePressEvent(QEvent *e) and check if e->type() == QEvent::MouseButtonPress.
e->type() == QEvent::MouseButtonPress