Hmm... why are you drawing in mousePressEvent? The event should handle mouse events, not draw anything. If the state of your widget changes as a result of mouse event handler, you should call updateGL() or update() to redraw it.