Don't know why my comment double-posted. The site hiccuped when I clicked "Post Quick Reply" and I guess that's the result.
You have some mystery code in there - like the static Curve variable "m" that calls "calculateSwitch() and then is used to "drawCtrlPositions()".
By the way, you have a call to swapBuffers() at the end of paintGL(). You know that QGLWidget automatically swaps buffers by default on exit from paintGL(), right? (QGLWidget::setAutoBufferSwap()) So maybe your failure to see any changes is because as soon as you swap buffers to the updated one, QGLWidget swaps back to the old one.
Bookmarks