Центр виджета внутри макета - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть собственный виджет, который я рисую с помощью QPainter. Я хочу центрировать виджет внутри моего вертикального макета. То, что у меня сейчас есть, это центрирование в главном окне. Есть ли способ рассчитать размеры вертикального макета на лету и центрировать виджет, если пользователь решил изменить ширину и высоту окна?

Ниже приведен мой код для создания виджета. Я использую Qt :: AlignCenter для выполнения текущего размещения. Я создал вертикальную разметку внутри дизайнера Qt.

#include "CircleProgressWidget.h"

CircleProgressWidget::CircleProgressWidget(QWidget *parent)
    : QWidget(parent)
{
}

CircleProgressWidget::~CircleProgressWidget()
{
}

/*
This needs work
*/
void CircleProgressWidget::paintEvent(QPaintEvent*) {

    QPainter painter(this);
    QPen pen;

    // Could be used as wall thickness
    pen.setWidth(7);

    pen.setColor(Qt::darkBlue);
    painter.setPen(pen);
    painter.setRenderHint(QPainter::Antialiasing);
    QRectF rectangle(Qt::AlignCenter,Qt::AlignCenter,calculateRadius(20) * 2, calculateRadius(20) * 2);
    int startAngle = -90 * 16;
    int spanAngle = 360 * 16;
    painter.drawArc(rectangle, startAngle, spanAngle);
}


int CircleProgressWidget::calculateRadius(int circumference) {
    int radius = circumference / 2 * M_PI;
    return radius;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...