Этот пример (рисование фигур) используется для введения в ООП уже десятки лет
В общем случае от Вас требуется создать базовый класс (напр CShape) и породить от него различные CRectangle, CCircle и.т.п. у которых есть свои поля и перекрытые виртуальные методы (paintEvent). По нажатию Вы должны создать нужный класс который "умеет себя рисовать"
Эх, если бы все было так просто как в этом примере