Если закрыть глаза  

 на попытку смешать теплое и зеленое, то должно быть так
C++ (Qt)
class Square
    : public QObject // всегда первый
    , public QPainter
{
    Q_OBJECT
public:
   Square(QObject* parent = nullptr);
   void drawSquare(QPoint point,QPoint point2,QPoint point3,QPoint point4);
};
 
Но  

, не нужно смешивать средство рисования QPainter и объект с поведением.
QPainter всегда можно создать на лету с указанием устройства, на котором требуется рисовать.