#include "PieChartPainted.h" #include #include #include #include PieChartPainted::PieChartPainted(const QColor& color, const QGradient& gradient, int progress, int value, QQuickItem *parent) : QskControl(parent) , m_color(color) , m_gradient(gradient) , m_progressBar(new CircularProgressBar(gradient, progress, this)) , m_progressLabel(new QskTextLabel(this)) // , m_numberLabel(new QskTextLabel(QString::number(value), this)) // , m_unitLabel(new QskTextLabel("kwH", this)) { setAutoLayoutChildren(true); auto progressText = QString::number(progress) + " %"; m_progressLabel->setText(progressText); m_progressLabel->setFontRole(QskSkin::SmallFont); m_progressLabel->setTextColor(color); } QSizeF PieChartPainted::contentsSizeHint(Qt::SizeHint /*sizeHint*/, const QSizeF& /*size*/) const { return {57, 57}; } void PieChartPainted::updateLayout() { m_progressBar->setContentsSize(size().toSize()); m_progressBar->update(); auto rect = contentsRect(); QFontMetricsF progressMetrics(m_progressLabel->effectiveFont(QskTextLabel::Text)); auto textWidth = progressMetrics.width(m_progressLabel->text()); auto posX = rect.width() / 2 - textWidth / 2; auto posY = rect.height() / 2 - progressMetrics.height() / 2; m_progressLabel->setPosition({posX, posY}); m_progressLabel->setFixedWidth(textWidth); }