#include "Rectangle.h" #include #include Rectangle::Rectangle(QQuickItem *parent) : QQuickPaintedItem{parent} { } void Rectangle::paint(QPainter *painter) { if (m_radius.size() < 4) return; painter->save(); painter->setRenderHint(QPainter::Antialiasing); QPainterPath path; QRectF rect = boundingRect(); path.moveTo(rect.bottomRight() - QPointF(0, m_radius[2])); path.lineTo(rect.topRight() + QPointF(0, m_radius[1])); path.arcTo(QRectF(QPointF(rect.topRight() - QPointF(m_radius[1] * 2, 0)), QSize(m_radius[1] * 2, m_radius[1] * 2)), 0, 90); path.lineTo(rect.topLeft() + QPointF(m_radius[0], 0)); path.arcTo(QRectF(QPointF(rect.topLeft()), QSize(m_radius[0] * 2, m_radius[0] * 2)), 90, 90); path.lineTo(rect.bottomLeft() - QPointF(0, m_radius[3])); path.arcTo( QRectF(QPointF(rect.bottomLeft() - QPointF(0, m_radius[3] * 2)), QSize(m_radius[3] * 2, m_radius[3] * 2)), 180, 90); path.lineTo(rect.bottomRight() - QPointF(m_radius[2], 0)); path.arcTo(QRectF(QPointF(rect.bottomRight() - QPointF(m_radius[2] * 2, m_radius[2] * 2)), QSize(m_radius[2] * 2, m_radius[2] * 2)), 270, 90); painter->fillPath(path, m_color); painter->restore(); } QColor Rectangle::color() const { return m_color; } void Rectangle::setColor(const QColor &color) { if (m_color != color) { m_color = color; emit colorChanged(); } } QList Rectangle::radius() const { return m_radius; } void Rectangle::setRadius(const QList &radius) { if (m_radius != radius) { m_radius = radius; emit radiusChanged(); } }