В QPainter вы найдете множество удобных функций, таких как drawRect.
Используйте QWidget :: mousePressEvent, QWidget :: mouseMoveEvent и QWidget :: mouseReleaseEvent, чтобы узнать, где пользователь рисует фигуру.
У вас должен быть QImage для фигур, которые уже были нарисованы.
Пока пользователь создает новую форму, вам нужно добавить ее в QPixmap, которая отображается для пользователя, но не добавляйте новую форму в QImage, пока пользователь не отпустит кнопку мыши. Таким образом, вы можете настроить форму, которую они рисуют, так как они рисуют.