##// END OF EJS Templates
Fix issue with pie label not drawn correctly when first created
Jani Honkonen -
r209:c977a59b6d90
parent child
Show More
@@ -130,6 +130,8 void PiePresenter::addSlice(QPieSlice* sliceData)
130 130 PieSlice *slice = new PieSlice(this);
131 131 slice->setPieRect(m_pieRect);
132 132 slice->updateData(sliceData);
133 slice->updateGeometry();
134 slice->update();
133 135 m_slices.insert(sliceData, slice);
134 136
135 137 // connect signals
@@ -101,7 +101,6 void PieSlice::updateGeometry()
101 101 // update label position
102 102 qreal radius = rect.height() / 2;
103 103 QPointF edgeCenter = rect.center() + offset(centerAngle, radius + 5);
104
105 104 m_slicelabel->setArmStartPoint(edgeCenter);
106 105 m_slicelabel->setArmAngle(centerAngle);
107 106 m_slicelabel->updateGeometry();
@@ -126,15 +125,14 void PieSlice::updateData(const QPieSlice* sliceData)
126 125 m_pen = sliceData->pen();
127 126 m_brush = sliceData->brush();
128 127
129 updateGeometry();
130 update();
131
132 128 m_slicelabel->setVisible(sliceData->isLabelVisible());
133 129 m_slicelabel->setText(sliceData->label());
134 130 m_slicelabel->setPen(sliceData->labelPen());
135 131 m_slicelabel->setFont(sliceData->labelFont());
136 132 m_slicelabel->setArmLength(sliceData->labelArmLenght());
137 m_slicelabel->updateGeometry(); // text size & font modifies the geometry
133
134 updateGeometry();
135 update();
138 136 m_slicelabel->update();
139 137 }
140 138
@@ -2,16 +2,18
2 2 #include <QPainter>
3 3 #include <qmath.h>
4 4 #include <QGraphicsTextItem>
5 #include <QDebug>
5 6
6 7 QTCOMMERCIALCHART_BEGIN_NAMESPACE
7 8
8 9 #define PI 3.14159265
9 10
10 11 PieSliceLabel::PieSliceLabel(QGraphicsItem* parent)
11 :QGraphicsItem(parent)
12 :QGraphicsItem(parent),
13 m_armAngle(0),
14 m_armLength(0)
12 15 {
13 // set defaults
14 m_pen = QPen(Qt::black);
16
15 17 }
16 18
17 19 void PieSliceLabel::paint(QPainter *painter, const QStyleOptionGraphicsItem* /*option*/, QWidget* /*widget*/)
@@ -24,6 +26,8 void PieSliceLabel::paint(QPainter *painter, const QStyleOptionGraphicsItem* /*o
24 26 // TODO: do we need a pen for text?
25 27 painter->setFont(m_font);
26 28 painter->drawText(m_textRect, m_text);
29
30 //qDebug() << "PieSliceLabel::paint" << m_text << m_textRect;
27 31 }
28 32
29 33 void PieSliceLabel::updateGeometry()
@@ -59,6 +63,8 void PieSliceLabel::updateGeometry()
59 63 m_armPath = path;
60 64 m_textRect = textRect;
61 65 m_rect = path.boundingRect().united(m_textRect);
66
67 //qDebug() << "PieSliceLabel::updateGeometry" << m_text << m_armStartPoint << m_armLength << m_armAngle << m_textRect;
62 68 }
63 69
64 70 QTCOMMERCIALCHART_END_NAMESPACE
General Comments 0
You need to be logged in to leave comments. Login now