Init
This commit is contained in:
93
graphicsarcitem.cpp
Normal file
93
graphicsarcitem.cpp
Normal file
@@ -0,0 +1,93 @@
|
||||
#include "graphicsarcitem.h"
|
||||
|
||||
graphicsArcItem::graphicsArcItem(qreal x, qreal y, qreal r, qreal a1, qreal a2)
|
||||
{
|
||||
this->x = x;
|
||||
this->y = y;
|
||||
this->r = r;
|
||||
this->a1 = a1;
|
||||
this->a2 = a2;
|
||||
this->col = QColor(Qt::black);
|
||||
this->textLeft="";
|
||||
this->textRight="";
|
||||
this->textVisible=false;
|
||||
}
|
||||
|
||||
QRectF graphicsArcItem::boundingRect() const
|
||||
{
|
||||
return QRectF(x-r, y-r, 2*r, 2*r);
|
||||
}
|
||||
|
||||
//QPainterPath graphicsArcItem::shape() const
|
||||
//{
|
||||
// QPainterPath path;
|
||||
// path.moveTo(x+r, y+r);
|
||||
// path.arcTo(boundingRect(), a2, a1);
|
||||
// return path;
|
||||
//}
|
||||
|
||||
void graphicsArcItem::setColor(QColor c)
|
||||
{
|
||||
if (col!=c) {
|
||||
prepareGeometryChange();
|
||||
col = c;
|
||||
}
|
||||
}
|
||||
void graphicsArcItem::setRadius(qreal rr)
|
||||
{
|
||||
if (r!=rr) {
|
||||
prepareGeometryChange();
|
||||
r = rr;
|
||||
}
|
||||
}
|
||||
|
||||
void graphicsArcItem::setAngle1(qreal a)
|
||||
{
|
||||
if (a1 != a) {
|
||||
prepareGeometryChange();
|
||||
a1=a;
|
||||
}
|
||||
}
|
||||
void graphicsArcItem::setAngle2(qreal a)
|
||||
{
|
||||
if (a2 != a) {
|
||||
prepareGeometryChange();
|
||||
a2=a;
|
||||
}
|
||||
}
|
||||
void graphicsArcItem::setAngles(qreal aa, qreal ab)
|
||||
{
|
||||
setAngle1(aa);
|
||||
setAngle2(ab);
|
||||
}
|
||||
|
||||
void graphicsArcItem::setText(QString str1, QString str2)
|
||||
{
|
||||
if ((textLeft!=str1)||(textRight!=str2))
|
||||
{
|
||||
prepareGeometryChange();
|
||||
textLeft = str1;
|
||||
textRight = str2;
|
||||
}
|
||||
}
|
||||
|
||||
void graphicsArcItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
|
||||
{
|
||||
painter->setPen(QPen(col));
|
||||
painter->drawPie(boundingRect(), a1*16, (a2-a1)*16);
|
||||
|
||||
if (textVisible)
|
||||
{
|
||||
|
||||
qreal fs = r/223;
|
||||
|
||||
|
||||
painter->setPen(QPen(Qt::white));
|
||||
QFont f = painter->font();
|
||||
f.setPointSizeF(fs*7);
|
||||
painter->setFont(f);
|
||||
|
||||
painter->drawText(x+0.95*r*cos(a1/180*M_PI), y-0.95*r*sin(a1/180*M_PI), textLeft);
|
||||
painter->drawText(x+0.95*r*cos(a2/180*M_PI), y-0.95*r*sin(a2/180*M_PI), textRight);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user