summaryrefslogtreecommitdiffstats
path: root/src/charts/doc/src/examples-nesteddonuts.qdoc
diff options
context:
space:
mode:
Diffstat (limited to 'src/charts/doc/src/examples-nesteddonuts.qdoc')
-rw-r--r--src/charts/doc/src/examples-nesteddonuts.qdoc50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/charts/doc/src/examples-nesteddonuts.qdoc b/src/charts/doc/src/examples-nesteddonuts.qdoc
new file mode 100644
index 00000000..697a59b4
--- /dev/null
+++ b/src/charts/doc/src/examples-nesteddonuts.qdoc
@@ -0,0 +1,50 @@
+/*!
+ \example nesteddonuts
+ \title Nested donuts example
+ \ingroup qtcharts_examples
+
+ \brief This example shows how to create a nested donuts chart using the QPieSeries API.
+ \image examples_nesteddonuts.png
+
+ Let's start by creating a QChartView instance and enabling the Antialiasing on it. A QChart object is then obtained from the QChartView instance.
+ The legend is disabled and the title of the chart is set. Last line enables the animations of the chart.
+
+ \snippet nesteddonuts/widget.cpp 1
+
+ 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.
+
+ \snippet nesteddonuts/widget.cpp 2
+
+ The following block of code defines the individual donuts and their slices. First a new QPieSeries object is created.
+ 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, of which the inner workings are explained later.
+ Finally the slice is added to the donut. The donut's size is adjusted to achieve the nesting of the donuts.
+ Then the donut is added to the widget's list of donuts and to the chart.
+
+ \snippet nesteddonuts/widget.cpp 3
+
+ Finally the widget is placed in a layout used by the application.
+
+ \snippet nesteddonuts/widget.cpp 4
+
+ To make the example more interesting the donuts are rotated randomly every 1.25 sec.
+
+ \snippet nesteddonuts/widget.cpp 5
+
+ The widget's updatedRotation slot is defined below.
+ It goes through all of the donuts and modifies their current rotation by a random value.
+
+ \snippet nesteddonuts/widget.cpp 6
+
+ 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 angles 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.
+
+ \snippet nesteddonuts/widget.cpp 7
+*/