##// END OF EJS Templates
Naming convention change for barcharts. QBarChartSeries is now QBarSeries etc.
Naming convention change for barcharts. QBarChartSeries is now QBarSeries etc.

File last commit:

r320:832b68ef6fc6
r338:7289fb2b50fb
Show More
qpieslice.cpp
375 lines | 7.3 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"
QTCOMMERCIALCHART_BEGIN_NAMESPACE
Jani Honkonen
Make pie fit better inside its given rectangle. Label texts still go outside. Needs a bit more work...
r289 #define DEFAULT_PEN_COLOR Qt::black
#define DEFAULT_BRUSH_COLOR Qt::white
Jani Honkonen
Add documentation to pie
r314 #define DEFAULT_LABEL_ARM_LENGTH 40
Jani Honkonen
Make pie fit better inside its given rectangle. Label texts still go outside. Needs a bit more work...
r289 #define DEFAULT_EXPOLODE_DISTANCE 20
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 /*!
\class QPieSlice
Jani Honkonen
More documentation for pie
r320 \brief Defines a slice a 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
Jani Honkonen
Add documentation to pie
r314 \sa QPieSeries::set(), QPieSeries::add()
*/
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),
m_value(0),
Jani Honkonen
Hide slice label by default
r294 m_isLabelVisible(false),
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 m_isExploded(false),
Jani Honkonen
Make pie fit better inside its given rectangle. Label texts still go outside. Needs a bit more work...
r289 m_explodeDistance(DEFAULT_EXPOLODE_DISTANCE),
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 m_percentage(0),
m_angle(0),
Jani Honkonen
Make pie fit better inside its given rectangle. Label texts still go outside. Needs a bit more work...
r289 m_angleSpan(0),
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 m_pen(DEFAULT_PEN_COLOR),
m_brush(DEFAULT_BRUSH_COLOR),
m_labelPen(DEFAULT_PEN_COLOR),
m_labelArmLength(DEFAULT_LABEL_ARM_LENGTH)
{
}
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.
\sa QPieSeries::set(), QPieSeries::add()
*/
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),
m_value(value),
m_label(label),
Jani Honkonen
Add documentation to pie
r314 m_isLabelVisible(false),
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 m_isExploded(false),
Jani Honkonen
Make pie fit better inside its given rectangle. Label texts still go outside. Needs a bit more work...
r289 m_explodeDistance(DEFAULT_EXPOLODE_DISTANCE),
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 m_percentage(0),
m_angle(0),
Jani Honkonen
Make pie fit better inside its given rectangle. Label texts still go outside. Needs a bit more work...
r289 m_angleSpan(0),
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 m_pen(DEFAULT_PEN_COLOR),
m_brush(DEFAULT_BRUSH_COLOR),
m_labelPen(DEFAULT_PEN_COLOR),
m_labelArmLength(DEFAULT_LABEL_ARM_LENGTH)
{
}
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
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
{
return m_value;
}
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
{
return m_label;
}
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
{
return m_isLabelVisible;
}
Jani Honkonen
Add documentation to pie
r314 /*!
Returns true if slice is exloded from the pie.
\sa setExploded()
*/
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
{
return m_isExploded;
}
Jani Honkonen
Add documentation to pie
r314 /*!
Returns the explosion distance of the slice.
Default value is 20.
\sa setExplodeDistance()
*/
Jani Honkonen
Make pie fit better inside its given rectangle. Label texts still go outside. Needs a bit more work...
r289 qreal QPieSlice::explodeDistance() const
{
return m_explodeDistance;
}
Jani Honkonen
Add documentation to pie
r314 /*!
Returns the percentage of this slice compared to all slices in the same series.
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
{
return m_percentage;
}
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
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 qreal QPieSlice::angle() const
{
return m_angle;
}
Jani Honkonen
Add documentation to pie
r314 /*!
Returns the angle span 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
Make pie fit better inside its given rectangle. Label texts still go outside. Needs a bit more work...
r289 qreal QPieSlice::angleSpan() const
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 {
Jani Honkonen
Make pie fit better inside its given rectangle. Label texts still go outside. Needs a bit more work...
r289 return 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.
\sa setPen()
*/
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 QPen QPieSlice::pen() const
{
return m_pen;
}
Jani Honkonen
Add documentation to pie
r314 /*!
Returns the brush used to draw this slice.
\sa setBrush()
*/
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 QBrush QPieSlice::brush() const
{
return m_brush;
}
Jani Honkonen
Add documentation to pie
r314 /*!
Returns the pen used to draw label in this slice.
\sa setLabelPen()
*/
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 QPen QPieSlice::labelPen() const
{
return m_labelPen;
}
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
{
return m_labelFont;
}
Jani Honkonen
Add documentation to pie
r314 /*!
Returns the label arm lenght used in this slice.
Default value is 40 pixels.
\sa setLabelArmLength()
*/
Jani Honkonen
Make pie fit better inside its given rectangle. Label texts still go outside. Needs a bit more work...
r289 qreal QPieSlice::labelArmLength() const
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 {
return m_labelArmLength;
}
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()
*/
/*!
Sets the value of this slice.
\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)
{
if (m_value != value) {
m_value = value;
emit changed();
}
}
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)
{
if (m_label != label) {
m_label = label;
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)
{
if (m_isLabelVisible != visible) {
m_isLabelVisible = visible;
emit changed();
}
}
Jani Honkonen
Add documentation to pie
r314 /*!
Sets this slice \a exploded.
\sa isExploded(), setExplodeDistance(), QPieSeries::enableClickExplodes()
*/
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)
{
if (m_isExploded != exploded) {
m_isExploded = exploded;
emit changed();
}
}
Jani Honkonen
Add documentation to pie
r314 /*!
Sets the explosion \a distance of this slice.
It is the distance the slice is moved away from the pie center.
\sa explodeDistance(), isExploded(), QPieSeries::enableClickExplodes()
*/
Jani Honkonen
Make pie fit better inside its given rectangle. Label texts still go outside. Needs a bit more work...
r289 void QPieSlice::setExplodeDistance(qreal distance)
{
if (m_explodeDistance != distance) {
m_explodeDistance = distance;
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.
\sa pen()
*/
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 void QPieSlice::setPen(QPen pen)
{
if (m_pen != pen) {
m_pen = pen;
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.
\sa brush()
*/
Jani Honkonen
Refactor pie (again). QPieSlice's now emit signals and no id's anymore. Just pointers in the interface.
r203 void QPieSlice::setBrush(QBrush brush)
{
if (m_brush != brush) {
m_brush = brush;
emit changed();
}
}
Jani Honkonen
Add documentation to pie
r314 /*!
Sets the \a pen used to draw the label in this slice.
Note that applying a theme will override this.
\sa labelPen()
*/
void QPieSlice::setLabelPen(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
Add documentation to pie
r314 if (m_labelPen != pen) {
m_labelPen = pen;
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()
*/
void QPieSlice::setLabelFont(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
Add documentation to pie
r314 if (m_labelFont != font) {
m_labelFont = font;
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 arm \a length used to draw the label in this slice.
\sa labelArmLength()
*/
void QPieSlice::setLabelArmLength(qreal length)
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 if (m_labelArmLength != length) {
m_labelArmLength = length;
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"
QTCOMMERCIALCHART_END_NAMESPACE