Компилятор не ругается но выводит просто форму.
А вот на эту фразу та внимание наверное не обратил?
Использовать QPainter можно в определенном месте, точнее в событии paintEvent или функциях которые вызываются из него -> рисовать можно в определенные моменты.
Поэтому, нужно наследоваться например от QWidget. Переопределять paintEvent и в нем рисовать то, что хочешь. Или рисовать на QPixmap, а потом в paintEvent выводить его на виджет.