diff --git a/src/piechart/qpieslice.cpp b/src/piechart/qpieslice.cpp index 4f5ee06..7fe0a5b 100644 --- a/src/piechart/qpieslice.cpp +++ b/src/piechart/qpieslice.cpp @@ -59,6 +59,8 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE Value of the slice. + Note that if users sets a negative value it is converted to a positive value. + \sa percentage(), QPieSeries::sum() */ @@ -303,8 +305,8 @@ QPieSlice::QPieSlice(QString label, qreal value, QObject *parent) :QObject(parent), d_ptr(new QPieSlicePrivate(this)) { - d_ptr->m_data.m_value = value; - d_ptr->m_data.m_labelText = label; + setValue(value); + setLabel(label); } /*! @@ -331,6 +333,7 @@ QString QPieSlice::label() const void QPieSlice::setValue(qreal value) { + value = qAbs(value); // negative values not allowed if (!qFuzzyIsNull(d_ptr->m_data.m_value - value)) { d_ptr->m_data.m_value = value; emit valueChanged(); diff --git a/tests/auto/qpieslice/tst_qpieslice.cpp b/tests/auto/qpieslice/tst_qpieslice.cpp index b90008b..f3d2892 100644 --- a/tests/auto/qpieslice/tst_qpieslice.cpp +++ b/tests/auto/qpieslice/tst_qpieslice.cpp @@ -121,8 +121,9 @@ void tst_qpieslice::changedSignals() // percentageChanged(), startAngleChanged() and angleSpanChanged() signals tested at tst_qpieseries::calculatedValues() // set everything twice to see we do not get unnecessary signals - slice.setValue(1); - slice.setValue(1); + slice.setValue(1.0); + slice.setValue(-1.0); + QCOMPARE(slice.value(), 1.0); slice.setLabel("foobar"); slice.setLabel("foobar"); slice.setLabelVisible();