не совсем понятно описано...
я так понял, что нужно отрисовку вынести в отдельный класс.
если так, то ничего не мешает создавать сколько угодно классов, описать в нем метод draw() и дергать их из paintGL() у QGLWidget'а.
Да, именно так. Меня смутило наличие контекста, думал, что его нужно как-то дёргать из класса в класс.
нет, дергать не нужно, по крайней мере для одного виджета с одним и тем же контекстом.
а вот если отрисовка будет в разных потоках, то тут придется подергать makeCurrent() для контекстов/виджетов.