У меня есть собственный виджет, который я рисую с помощью 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;
}