Лучше всего использовать макеты вместо жестких позиций. Использование макета позволяет использовать Qt.Align для центрирования QWidgets.
Если вы не хотите использовать макеты. Вы можете сделать что-то вроде
int xpos = parent->width()/2 - p3->width()/2
int ypos = parent->height()/2 - p3->height()/2
p3->setGeometry(QRectF(xpos,ypos, 64.0, 64.0));