Как отрисовать такую линию: http://ipicture.ru/
Сейчас я её отрисовал так:
| Код |
void MenuItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { painter->setBrush(Qt::black); painter->drawRect(option->exposedRect);
int LineWidth = 6; int Radius = 10; QColor InsideColor = Qt::red; QColor OutsideColor = Qt::white; QRadialGradient radialGradient;
// левой крвй radialGradient = QRadialGradient(Radius, Radius, Radius, Radius, Radius); radialGradient.setColorAt((Radius - LineWidth*1.0)/Radius, InsideColor); radialGradient.setColorAt(1, OutsideColor); painter->setPen(QPen(QBrush(radialGradient), LineWidth)); painter->drawArc(0, 0, Radius*2, Radius*2, 90*16, 90*16);
// правый край radialGradient = QRadialGradient(Radius + 45, Radius, Radius, Radius + 45, Radius); radialGradient.setColorAt((Radius - LineWidth*1.0)/Radius, InsideColor); radialGradient.setColorAt(1, OutsideColor); painter->setPen(QPen(QBrush(radialGradient), LineWidth)); painter->drawArc(45, 0, Radius*2, Radius*2, 0*16, 90*16);
// прямая QLinearGradient linearGrad; linearGrad.setColorAt(0, Qt::white); linearGrad.setColorAt(1, Qt::red); QPen NewPen; NewPen.setWidth(LineWidth); linearGrad.setStart(0, 0); linearGrad.setFinalStop(0, LineWidth); NewPen.setBrush(linearGrad); painter->setPen(NewPen);
painter->drawLine(Radius,0, Radius+45,0); }
|
Что выглядит ужасно, по моему. Есть ли боле лаконичное решение? |