@amansahil
Check after setting the position if polygon->scenePos() - clickPoint == (0, 0). If it is, there's a problem with the event->scenePos(), and if not, there's a problem with how the polygon position is being set.
The right conversion would be
polygon->setPos( clickPoint - polygonParent->scenePos() )
mapFromScene() is better than mapToScene() since you have the coordinates in the scene frame and you want them in local coordinates. But it still isn't quite right! You specify position in the local parent coordinates, not the local item frame. So that approach to use is
polygon->setPos( polygonParent->mapFromScene(clickPoint) )