Я не понимаю, что вы указываете в строке, возможно, это выполняется в MFC, но правила не принимаются без их анализа, вы должны понимать их, и кажется, что вы хотите применить их, не понимая их правильно.
В соответствии с тем, что вы указали, вы хотите, чтобы многоугольник всегда центрировался внутри окна, а в вашем коде вы используете размер окна, который не имеет смысла, так как окно может находиться где угодно на экране.оттуда мы идем плохо.
Если вы хотите, чтобы центр многоугольника был центром окна, то вы должны рассчитать обе точки, учитывая в первом эталонном источнике верхний слой прямоугольника, граничащего с многоугольником,а во втором прямоугольник окна, если мы вычтем обе позиции, мы получим то, что художник должен переместить так, чтобы обе точки совпадали.
void QtGuiApplication1::paintEvent(QPaintEvent *)
{
QPainter painter(this);
static const QVector<QPointF> points = {
QPointF(10.0, 10.0),
QPointF(10.0, 80.0),
QPointF(50.0, 80.0),
QPointF(10.0, 10.0)
};
QPainterPath path;
path.addPolygon(QPolygonF(points));
QPointF center_path = path.boundingRect().center();
painter.translate(rect().center()-center_path);
painter.drawPath(path);
}