demos-nesteddonuts.qdoc
49 lines
| 2.5 KiB
| text/plain
|
TextLexer
Marek Rosa
|
r1713 | /*! | ||
Jani Honkonen
|
r1886 | \example demos/nesteddonuts | ||
\title Nested donuts demo | ||||
Marek Rosa
|
r1713 | \subtitle | ||
This example shows how to use create a nested donuts chart using QPieSeries API. | ||||
Tero Ahola
|
r1826 | \image examples_donutchart.png | ||
Marek Rosa
|
r1713 | |||
Let's start by creating a QChartView instance and enabling the Antialiasing on it. Last line enables the animations of the chart. | ||||
Jani Honkonen
|
r1886 | \snippet ../demos/nesteddonuts/widget.cpp 1 | ||
Marek Rosa
|
r1713 | |||
Three variables are defined that will be used to define the donut chart. Min and max size define the relative size of the whole donut. | ||||
minSize is the relative inner size of the smallest donut. maxSize is the relative outer size of the biggest donut. | ||||
Jani Honkonen
|
r1886 | \snippet ../demos/nesteddonuts/widget.cpp 2 | ||
Marek Rosa
|
r1713 | |||
Following block of code defines the individual donuts and their slices. First new QPieSeries object is created. | ||||
Callign setDonut() changes pie into a donut. The number of slices in each donut is randomized. | ||||
The internal for loop creates the slices with a random value and label same as the value. | ||||
Next the label of the slice is set to be visible and its color is set to white. | ||||
To make the example more interesting the hovered signal of the slice is connected to widget's slot which inner workings are explained later. | ||||
Finally the slice is added to the donut. The donut's size is adjusted to achive the nesting of the donuts. | ||||
Then the donut is added to the widget's list of donuts and to the chart. | ||||
Jani Honkonen
|
r1886 | \snippet ../demos/nesteddonuts/widget.cpp 3 | ||
Marek Rosa
|
r1713 | |||
Finally the widget is placed in a layout used by the application. | ||||
Jani Honkonen
|
r1886 | \snippet ../demos/nesteddonuts/widget.cpp 4 | ||
Marek Rosa
|
r1713 | |||
To make the example more interesting the donuts are rotated randomly every 1.25 sec. | ||||
Jani Honkonen
|
r1886 | \snippet ../demos/nesteddonuts/widget.cpp 5 | ||
Marek Rosa
|
r1713 | |||
The widget's updatedRotation slot is defined below. | ||||
It goes through all of the donuts and modifies thier current rotation by a random value. | ||||
Jani Honkonen
|
r1886 | \snippet ../demos/nesteddonuts/widget.cpp 6 | ||
Marek Rosa
|
r1713 | |||
The earlier mentioned explodeSlice slot code is provided below. | ||||
If the slice is set to exploded then stop the timer that controls the donuts rotation. | ||||
Then the slice's start and end agles are obtained from the slice. | ||||
To highlight the selected slice all the other donuts that lie outward from the one that contains the selected slice | ||||
have their start and end angles modified so that they wouldn't "block" the way for the hightlighted slice. | ||||
If the slice is no longer selected return to the original state. | ||||
Jani Honkonen
|
r1886 | \snippet ../demos/nesteddonuts/widget.cpp 7 | ||
Marek Rosa
|
r1713 | */ | ||