##// END OF EJS Templates
Polishing qchart class
Polishing qchart class

File last commit:

r714:6705438d7ae7
r742:c04f89af81a0
Show More
qpieslice.cpp
413 lines | 8.8 KiB | text/x-c | CppLexer
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 #include "qpieslice.h"
Jani Honkonen
Adding PIMPL to pie
r669 #include "qpiesliceprivate_p.h"
Jani Honkonen
Add animations to pie. Works but has some visual issues when adding slices.
r618 #include "qpieseries.h"
Jani Honkonen
Adding PIMPL to pie
r669 #include "qpieseriesprivate_p.h"
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203
QTCOMMERCIALCHART_BEGIN_NAMESPACE
Jani Honkonen
Add documentation to pie
r314 /*!
\class QPieSlice
Jani Honkonen
Typo fix for slice doc
r339 \brief Defines a slice in pie series.
Jani Honkonen
Add documentation to pie
r314
Jani Honkonen
More documentation for pie
r320 Holds all the data of a single slice in a QPieSeries and provides the means
to modify slice data and customize the visual appearance of the slice.
It also provides the means to customize user interaction with the slice by
providing signals for clicking and hover events.
Jani Honkonen
Add documentation to pie
r314 */
/*!
\property QPieSlice::label
Label of the slice.
*/
/*!
\property QPieSlice::value
Value of the slice.
*/
/*!
Constructs an empty slice with a \a parent.
Jani Honkonen
More documentation for pie
r320
Jani Honkonen
Add documentation to pie
r314 Note that QPieSeries takes ownership of the slice when it is set/added.
Jani Honkonen
More documentation for pie
r320
Michal Klocek
minor. doc fix for pieslice
r361 \sa QPieSeries::replace(), QPieSeries::add()
Jani Honkonen
Add documentation to pie
r314 */
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 QPieSlice::QPieSlice(QObject *parent)
:QObject(parent),
Jani Honkonen
Adding PIMPL to pie
r669 d_ptr(new QPieSlicePrivate(this))
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 {
}
Jani Honkonen
Add documentation to pie
r314 /*!
Constructs an empty slice with given \a value, \a label and a \a parent.
Note that QPieSeries takes ownership of the slice when it is set/added.
Michal Klocek
minor. doc fix for pieslice
r361 \sa QPieSeries::replace(), QPieSeries::add()
Jani Honkonen
Add documentation to pie
r314 */
QPieSlice::QPieSlice(qreal value, QString label, QObject *parent)
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 :QObject(parent),
Jani Honkonen
Adding PIMPL to pie
r669 d_ptr(new QPieSlicePrivate(this))
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 {
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(QPieSlice);
d->m_data.m_value = value;
d->m_data.m_labelText = label;
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 }
Jani Honkonen
Add documentation to pie
r314 /*!
Destroys the slice.
User should not delete the slice if it has been added to the series.
*/
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 QPieSlice::~QPieSlice()
{
Jani Honkonen
Adding PIMPL to pie
r669 delete d_ptr;
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 }
Jani Honkonen
Add documentation to pie
r314 /*!
Gets the value of the slice.
Note that all values in the series
\sa setValue()
*/
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 qreal QPieSlice::value() const
{
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(const QPieSlice);
return d->m_data.m_value;
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 }
Jani Honkonen
Add documentation to pie
r314 /*!
Gets the label of the slice.
\sa setLabel()
*/
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 QString QPieSlice::label() const
{
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(const QPieSlice);
return d->m_data.m_labelText;
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 }
Jani Honkonen
Add documentation to pie
r314 /*!
Returns true if label is set as visible.
\sa setLabelVisible()
*/
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 bool QPieSlice::isLabelVisible() const
{
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(const QPieSlice);
Jani Honkonen
Fix setting custom color to pie. Now the pie knows if the color is set by the user.
r691 return d->m_data.m_isLabelVisible;
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 }
Jani Honkonen
Add documentation to pie
r314 /*!
Returns true if slice is exloded from the pie.
Jani Honkonen
Introducing vertical and horizontal factors to control the position of the pie.
r454 \sa setExploded(), setExplodeDistanceFactor()
Jani Honkonen
Add documentation to pie
r314 */
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 bool QPieSlice::isExploded() const
{
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(const QPieSlice);
return d->m_data.m_isExploded;
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 }
Jani Honkonen
Add documentation to pie
r314 /*!
Jani Honkonen
Introducing vertical and horizontal factors to control the position of the pie.
r454 Returns the explode distance factor.
The factor is relative to pie radius. For example:
1.0 means the distance is the same as the radius.
0.5 means the distance is half of the radius.
Default value is 0.15.
\sa setExplodeDistanceFactor()
Jani Honkonen
Add documentation to pie
r314 */
Jani Honkonen
Introducing vertical and horizontal factors to control the position of the pie.
r454 qreal QPieSlice::explodeDistanceFactor() const
Jani Honkonen
Make pie fit better inside its given rectangle. Label texts still go outside. Needs a bit more work...
r289 {
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(const QPieSlice);
return d->m_data.m_explodeDistanceFactor;
Jani Honkonen
Make pie fit better inside its given rectangle. Label texts still go outside. Needs a bit more work...
r289 }
Jani Honkonen
Add documentation to pie
r314 /*!
Returns the percentage of this slice compared to all slices in the same series.
Jani Honkonen
Review corrections for pie
r386 The returned value ranges from 0 to 1.0.
Jani Honkonen
More documentation for pie
r320
Jani Honkonen
Add documentation to pie
r314 Updated internally after the slice is added to the series.
*/
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 qreal QPieSlice::percentage() const
{
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(const QPieSlice);
return d->m_data.m_percentage;
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 }
Jani Honkonen
Add documentation to pie
r314 /*!
Returns the starting angle of this slice in the series it belongs to.
Jani Honkonen
More documentation for pie
r320
Full pie is 360 degrees where 0 degrees is at 12 a'clock.
Jani Honkonen
Add documentation to pie
r314 Updated internally after the slice is added to the series.
*/
Jani Honkonen
QPieSlice: angle() -> startAngle(), angleSpan() -> endAngle()
r355 qreal QPieSlice::startAngle() const
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 {
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(const QPieSlice);
return d->m_data.m_startAngle;
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 }
Jani Honkonen
Add documentation to pie
r314 /*!
Jani Honkonen
QPieSlice: angle() -> startAngle(), angleSpan() -> endAngle()
r355 Returns the end angle of this slice in the series it belongs to.
Jani Honkonen
More documentation for pie
r320
Full pie is 360 degrees where 0 degrees is at 12 a'clock.
Jani Honkonen
Add documentation to pie
r314 Updated internally after the slice is added to the series.
*/
Jani Honkonen
QPieSlice: angle() -> startAngle(), angleSpan() -> endAngle()
r355 qreal QPieSlice::endAngle() const
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 {
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(const QPieSlice);
return d->m_data.m_startAngle + d->m_data.m_angleSpan;
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 }
Jani Honkonen
Add documentation to pie
r314 /*!
Returns the pen used to draw this slice.
Jani Honkonen
Renaming pen & brush functions for pie and adding const
r469 \sa setSlicePen()
Jani Honkonen
Add documentation to pie
r314 */
Jani Honkonen
Renaming pen & brush functions for pie and adding const
r469 QPen QPieSlice::slicePen() const
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 {
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(const QPieSlice);
return d->m_data.m_slicePen;
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 }
Jani Honkonen
Add documentation to pie
r314 /*!
Returns the brush used to draw this slice.
Jani Honkonen
Renaming pen & brush functions for pie and adding const
r469 \sa setSliceBrush()
Jani Honkonen
Add documentation to pie
r314 */
Jani Honkonen
Renaming pen & brush functions for pie and adding const
r469 QBrush QPieSlice::sliceBrush() const
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 {
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(const QPieSlice);
return d->m_data.m_sliceBrush;
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 }
Jani Honkonen
Add documentation to pie
r314 /*!
Jani Honkonen
Get pie slice label font and pen from theme
r714 Returns the pen used to draw the label in this slice.
Jani Honkonen
Renaming pen & brush functions for pie and adding const
r469 \sa setLabelArmPen()
Jani Honkonen
Add documentation to pie
r314 */
Jani Honkonen
Get pie slice label font and pen from theme
r714 QPen QPieSlice::labelPen() const
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 {
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(const QPieSlice);
Jani Honkonen
Get pie slice label font and pen from theme
r714 return d->m_data.m_labelPen;
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 }
Jani Honkonen
Add documentation to pie
r314 /*!
Returns the font used to draw label in this slice.
\sa setLabelFont()
*/
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 QFont QPieSlice::labelFont() const
{
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(const QPieSlice);
return d->m_data.m_labelFont;
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 }
Jani Honkonen
Add documentation to pie
r314 /*!
Jani Honkonen
Fix setting custom color to pie. Now the pie knows if the color is set by the user.
r691 Gets the label arm length factor.
Jani Honkonen
Introducing vertical and horizontal factors to control the position of the pie.
r454
The factor is relative to pie radius. For example:
1.0 means the length is the same as the radius.
0.5 means the length is half of the radius.
Default value is 0.15
\sa setLabelArmLengthFactor()
Jani Honkonen
Add documentation to pie
r314 */
Jani Honkonen
Introducing vertical and horizontal factors to control the position of the pie.
r454 qreal QPieSlice::labelArmLengthFactor() const
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 {
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(const QPieSlice);
return d->m_data.m_labelArmLengthFactor;
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 }
Jani Honkonen
Add documentation to pie
r314 /*!
\fn void QPieSlice::clicked()
This signal is emitted when user has clicked the slice.
\sa QPieSeries::clicked()
*/
/*!
\fn void QPieSlice::hoverEnter()
This signal is emitted when user has hovered over the slice.
\sa QPieSeries::hoverEnter()
*/
/*!
\fn void QPieSlice::hoverLeave()
This signal is emitted when user has hovered away from the slice.
\sa QPieSeries::hoverLeave()
*/
/*!
\fn void QPieSlice::changed()
This signal emitted when something has changed in the slice.
\sa QPieSeries::changed()
*/
/*!
Jani Honkonen
Introducing vertical and horizontal factors to control the position of the pie.
r454 Sets the \a value of this slice.
Jani Honkonen
Add documentation to pie
r314 \sa value()
*/
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 void QPieSlice::setValue(qreal value)
{
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(QPieSlice);
if (d->m_data.m_value != value) {
d->m_data.m_value = value;
Jani Honkonen
Add animations to pie. Works but has some visual issues when adding slices.
r618
QPieSeries *series = qobject_cast<QPieSeries*>(parent());
if (series)
Jani Honkonen
Getting rid of friend classes in pie API
r676 series->data_ptr()->updateDerivativeData(); // will emit changed()
Jani Honkonen
Add animations to pie. Works but has some visual issues when adding slices.
r618 else
emit changed();
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 }
}
Jani Honkonen
Add documentation to pie
r314 /*!
Sets the \a label of the slice.
\sa label()
*/
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 void QPieSlice::setLabel(QString label)
{
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(QPieSlice);
if (d->m_data.m_labelText != label) {
d->m_data.m_labelText = label;
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 emit changed();
}
}
Jani Honkonen
Add documentation to pie
r314 /*!
Sets the label \a visible in this slice.
\sa isLabelVisible(), QPieSeries::setLabelsVisible()
*/
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 void QPieSlice::setLabelVisible(bool visible)
{
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(QPieSlice);
Jani Honkonen
Fix setting custom color to pie. Now the pie knows if the color is set by the user.
r691 if (d->m_data.m_isLabelVisible != visible) {
d->m_data.m_isLabelVisible = visible;
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 emit changed();
}
}
Jani Honkonen
Add documentation to pie
r314 /*!
Sets this slice \a exploded.
Jani Honkonen
Introducing vertical and horizontal factors to control the position of the pie.
r454 \sa isExploded(), explodeDistanceFactor()
Jani Honkonen
Add documentation to pie
r314 */
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 void QPieSlice::setExploded(bool exploded)
{
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(QPieSlice);
if (d->m_data.m_isExploded != exploded) {
d->m_data.m_isExploded = exploded;
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 emit changed();
}
}
Jani Honkonen
Add documentation to pie
r314 /*!
Jani Honkonen
Introducing vertical and horizontal factors to control the position of the pie.
r454 Sets the explode distance \a factor.
The factor is relative to pie radius. For example:
1.0 means the distance is the same as the radius.
0.5 means the distance is half of the radius.
Default value is 0.15
\sa explodeDistanceFactor()
Jani Honkonen
Add documentation to pie
r314 */
Jani Honkonen
Introducing vertical and horizontal factors to control the position of the pie.
r454 void QPieSlice::setExplodeDistanceFactor(qreal factor)
Jani Honkonen
Make pie fit better inside its given rectangle. Label texts still go outside. Needs a bit more work...
r289 {
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(QPieSlice);
if (d->m_data.m_explodeDistanceFactor != factor) {
d->m_data.m_explodeDistanceFactor = factor;
Jani Honkonen
Make pie fit better inside its given rectangle. Label texts still go outside. Needs a bit more work...
r289 emit changed();
}
}
Jani Honkonen
Add documentation to pie
r314 /*!
Sets the \a pen used to draw this slice.
Note that applying a theme will override this.
Jani Honkonen
Renaming pen & brush functions for pie and adding const
r469 \sa slicePen()
Jani Honkonen
Add documentation to pie
r314 */
Jani Honkonen
Renaming pen & brush functions for pie and adding const
r469 void QPieSlice::setSlicePen(const QPen &pen)
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 {
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(QPieSlice);
if (d->m_data.m_slicePen != pen) {
d->m_data.m_slicePen = pen;
Jani Honkonen
Fix setting custom color to pie. Now the pie knows if the color is set by the user.
r691 d->m_data.m_slicePen.setThemed(false);
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 emit changed();
}
}
Jani Honkonen
Add documentation to pie
r314 /*!
Sets the \a brush used to draw this slice.
Note that applying a theme will override this.
Jani Honkonen
Renaming pen & brush functions for pie and adding const
r469 \sa sliceBrush()
Jani Honkonen
Add documentation to pie
r314 */
Jani Honkonen
Renaming pen & brush functions for pie and adding const
r469 void QPieSlice::setSliceBrush(const QBrush &brush)
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 {
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(QPieSlice);
if (d->m_data.m_sliceBrush != brush) {
d->m_data.m_sliceBrush = brush;
Jani Honkonen
Fix setting custom color to pie. Now the pie knows if the color is set by the user.
r691 d->m_data.m_sliceBrush.setThemed(false);
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 emit changed();
}
}
Jani Honkonen
Add documentation to pie
r314 /*!
Jani Honkonen
Get pie slice label font and pen from theme
r714 Sets the \a pen used to draw the label in this slice.
Jani Honkonen
Add documentation to pie
r314 Note that applying a theme will override this.
Jani Honkonen
Renaming pen & brush functions for pie and adding const
r469 \sa labelArmPen()
Jani Honkonen
Add documentation to pie
r314 */
Jani Honkonen
Get pie slice label font and pen from theme
r714 void QPieSlice::setLabelPen(const QPen &pen)
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 {
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(QPieSlice);
Jani Honkonen
Get pie slice label font and pen from theme
r714 if (d->m_data.m_labelPen != pen) {
d->m_data.m_labelPen = pen;
d->m_data.m_labelPen.setThemed(false);
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 emit changed();
}
}
Jani Honkonen
Add documentation to pie
r314 /*!
Sets the \a font used to draw the label in this slice.
Note that applying a theme will override this.
\sa labelFont()
*/
Jani Honkonen
Renaming pen & brush functions for pie and adding const
r469 void QPieSlice::setLabelFont(const QFont &font)
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 {
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(QPieSlice);
if (d->m_data.m_labelFont != font) {
d->m_data.m_labelFont = font;
Jani Honkonen
Fix setting custom color to pie. Now the pie knows if the color is set by the user.
r691 d->m_data.m_labelFont.setThemed(false);
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 emit changed();
}
}
Jani Honkonen
Add documentation to pie
r314 /*!
Jani Honkonen
Fix setting custom color to pie. Now the pie knows if the color is set by the user.
r691 Sets the label arm length \a factor.
Jani Honkonen
Introducing vertical and horizontal factors to control the position of the pie.
r454
The factor is relative to pie radius. For example:
1.0 means the length is the same as the radius.
0.5 means the length is half of the radius.
Default value is 0.15
\sa labelArmLengthFactor()
Jani Honkonen
Add documentation to pie
r314 */
Jani Honkonen
Introducing vertical and horizontal factors to control the position of the pie.
r454 void QPieSlice::setLabelArmLengthFactor(qreal factor)
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 {
Jani Honkonen
Adding PIMPL to pie
r669 Q_D(QPieSlice);
if (d->m_data.m_labelArmLengthFactor != factor) {
d->m_data.m_labelArmLengthFactor = factor;
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 emit changed();
}
}
#include "moc_qpieslice.cpp"
Jani Honkonen
Getting rid of friend classes in pie API
r676 #include "moc_qpiesliceprivate_p.cpp"
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203
QTCOMMERCIALCHART_END_NAMESPACE