From c977a59b6d90c7f5990767294fa0d46a3525efef 2012-02-17 14:18:23 From: Jani Honkonen Date: 2012-02-17 14:18:23 Subject: [PATCH] Fix issue with pie label not drawn correctly when first created --- diff --git a/src/piechart/piepresenter.cpp b/src/piechart/piepresenter.cpp index 88d053d..49e9408 100644 --- a/src/piechart/piepresenter.cpp +++ b/src/piechart/piepresenter.cpp @@ -130,6 +130,8 @@ void PiePresenter::addSlice(QPieSlice* sliceData) PieSlice *slice = new PieSlice(this); slice->setPieRect(m_pieRect); slice->updateData(sliceData); + slice->updateGeometry(); + slice->update(); m_slices.insert(sliceData, slice); // connect signals diff --git a/src/piechart/pieslice.cpp b/src/piechart/pieslice.cpp index 898e3c3..a46a533 100644 --- a/src/piechart/pieslice.cpp +++ b/src/piechart/pieslice.cpp @@ -101,7 +101,6 @@ void PieSlice::updateGeometry() // update label position qreal radius = rect.height() / 2; QPointF edgeCenter = rect.center() + offset(centerAngle, radius + 5); - m_slicelabel->setArmStartPoint(edgeCenter); m_slicelabel->setArmAngle(centerAngle); m_slicelabel->updateGeometry(); @@ -126,15 +125,14 @@ void PieSlice::updateData(const QPieSlice* sliceData) m_pen = sliceData->pen(); m_brush = sliceData->brush(); - updateGeometry(); - update(); - m_slicelabel->setVisible(sliceData->isLabelVisible()); m_slicelabel->setText(sliceData->label()); m_slicelabel->setPen(sliceData->labelPen()); m_slicelabel->setFont(sliceData->labelFont()); m_slicelabel->setArmLength(sliceData->labelArmLenght()); - m_slicelabel->updateGeometry(); // text size & font modifies the geometry + + updateGeometry(); + update(); m_slicelabel->update(); } diff --git a/src/piechart/pieslicelabel.cpp b/src/piechart/pieslicelabel.cpp index 198b1bc..2c513d4 100644 --- a/src/piechart/pieslicelabel.cpp +++ b/src/piechart/pieslicelabel.cpp @@ -2,16 +2,18 @@ #include #include #include +#include QTCOMMERCIALCHART_BEGIN_NAMESPACE #define PI 3.14159265 PieSliceLabel::PieSliceLabel(QGraphicsItem* parent) - :QGraphicsItem(parent) + :QGraphicsItem(parent), + m_armAngle(0), + m_armLength(0) { - // set defaults - m_pen = QPen(Qt::black); + } void PieSliceLabel::paint(QPainter *painter, const QStyleOptionGraphicsItem* /*option*/, QWidget* /*widget*/) @@ -24,6 +26,8 @@ void PieSliceLabel::paint(QPainter *painter, const QStyleOptionGraphicsItem* /*o // TODO: do we need a pen for text? painter->setFont(m_font); painter->drawText(m_textRect, m_text); + + //qDebug() << "PieSliceLabel::paint" << m_text << m_textRect; } void PieSliceLabel::updateGeometry() @@ -59,6 +63,8 @@ void PieSliceLabel::updateGeometry() m_armPath = path; m_textRect = textRect; m_rect = path.boundingRect().united(m_textRect); + + //qDebug() << "PieSliceLabel::updateGeometry" << m_text << m_armStartPoint << m_armLength << m_armAngle << m_textRect; } QTCOMMERCIALCHART_END_NAMESPACE