diff options
Diffstat (limited to 'examples/datavisualization/bars')
-rw-r--r-- | examples/datavisualization/bars/doc/images/bars-example.png | bin | 151337 -> 188289 bytes | |||
-rw-r--r-- | examples/datavisualization/bars/doc/src/bars.qdoc | 15 | ||||
-rw-r--r-- | examples/datavisualization/bars/graphmodifier.cpp | 32 | ||||
-rw-r--r-- | examples/datavisualization/bars/graphmodifier.h | 4 | ||||
-rw-r--r-- | examples/datavisualization/bars/main.cpp | 34 |
5 files changed, 84 insertions, 1 deletions
diff --git a/examples/datavisualization/bars/doc/images/bars-example.png b/examples/datavisualization/bars/doc/images/bars-example.png Binary files differindex 5bd2c7d9..fb79668d 100644 --- a/examples/datavisualization/bars/doc/images/bars-example.png +++ b/examples/datavisualization/bars/doc/images/bars-example.png diff --git a/examples/datavisualization/bars/doc/src/bars.qdoc b/examples/datavisualization/bars/doc/src/bars.qdoc index 361078bb..1fa3f934 100644 --- a/examples/datavisualization/bars/doc/src/bars.qdoc +++ b/examples/datavisualization/bars/doc/src/bars.qdoc @@ -29,6 +29,7 @@ \li Create an application with Q3DBars and some widgets \li Use QBar3DSeries and QBarDataProxy to set data to the graph \li Adjust some graph and series properties using widget controls + \li Select a row or a column by clicking an axis label \endlist It also demonstrates how having negative bar values affects the graph. @@ -167,6 +168,20 @@ \li Font size \endlist + \section1 Selecting a row/column by clicking an axis label + + Selection by axis label is default functionality for bar graphs. As an example, you can select + rows by clicking an axis label in the following way: + + \list + \li Change selection mode to \c SelectionRow + \li Click a year label + \li The row with the clicked year is selected + \endlist + + You can use the same method with \c SelectionSlice and \c SelectionItem flags, as long as + you have either \c SelectionRow or \c SelectionColumn set as well. + \section1 Example contents */ diff --git a/examples/datavisualization/bars/graphmodifier.cpp b/examples/datavisualization/bars/graphmodifier.cpp index 5df4066c..9c280bfb 100644 --- a/examples/datavisualization/bars/graphmodifier.cpp +++ b/examples/datavisualization/bars/graphmodifier.cpp @@ -68,9 +68,15 @@ GraphModifier::GraphModifier(Q3DBars *bargraph) m_temperatureAxis->setSubSegmentCount(m_subSegments); m_temperatureAxis->setRange(m_minval, m_maxval); m_temperatureAxis->setLabelFormat(QString(QStringLiteral("%.1f ") + celsiusString)); + m_temperatureAxis->setLabelAutoRotation(30.0f); + m_temperatureAxis->setTitleVisible(true); m_yearAxis->setTitle("Year"); + m_yearAxis->setLabelAutoRotation(30.0f); + m_yearAxis->setTitleVisible(true); m_monthAxis->setTitle("Month"); + m_monthAxis->setLabelAutoRotation(30.0f); + m_monthAxis->setTitleVisible(true); m_graph->setValueAxis(m_temperatureAxis); m_graph->setRowAxis(m_yearAxis); @@ -236,6 +242,27 @@ void GraphModifier::shadowQualityUpdatedByVisual(QAbstract3DGraph::ShadowQuality emit shadowQualityChanged(quality); } +void GraphModifier::changeLabelRotation(int rotation) +{ + m_temperatureAxis->setLabelAutoRotation(float(rotation)); + m_monthAxis->setLabelAutoRotation(float(rotation)); + m_yearAxis->setLabelAutoRotation(float(rotation)); +} + +void GraphModifier::setAxisTitleVisibility(bool enabled) +{ + m_temperatureAxis->setTitleVisible(enabled); + m_monthAxis->setTitleVisible(enabled); + m_yearAxis->setTitleVisible(enabled); +} + +void GraphModifier::setAxisTitleFixed(bool enabled) +{ + m_temperatureAxis->setTitleFixed(enabled); + m_monthAxis->setTitleFixed(enabled); + m_yearAxis->setTitleFixed(enabled); +} + void GraphModifier::changeShadowQuality(int quality) { QAbstract3DGraph::ShadowQuality sq = QAbstract3DGraph::ShadowQuality(quality); @@ -278,3 +305,8 @@ void GraphModifier::setSeriesVisibility(int enabled) { m_secondarySeries->setVisible(bool(enabled)); } + +void GraphModifier::setReverseValueAxis(int enabled) +{ + m_graph->valueAxis()->setReversed(enabled); +} diff --git a/examples/datavisualization/bars/graphmodifier.h b/examples/datavisualization/bars/graphmodifier.h index cac002a1..107ffbab 100644 --- a/examples/datavisualization/bars/graphmodifier.h +++ b/examples/datavisualization/bars/graphmodifier.h @@ -48,6 +48,7 @@ public: void setGridEnabled(int enabled); void setSmoothBars(int smooth); void setSeriesVisibility(int enabled); + void setReverseValueAxis(int enabled); public slots: void changeRange(int range); @@ -56,6 +57,9 @@ public slots: void changeTheme(int theme); void changeShadowQuality(int quality); void shadowQualityUpdatedByVisual(QAbstract3DGraph::ShadowQuality shadowQuality); + void changeLabelRotation(int rotation); + void setAxisTitleVisibility(bool enabled); + void setAxisTitleFixed(bool enabled); signals: void shadowQualityChanged(int quality); diff --git a/examples/datavisualization/bars/main.cpp b/examples/datavisualization/bars/main.cpp index e6461202..96abdc51 100644 --- a/examples/datavisualization/bars/main.cpp +++ b/examples/datavisualization/bars/main.cpp @@ -132,6 +132,10 @@ int main(int argc, char **argv) seriesCheckBox->setText(QStringLiteral("Show second series")); seriesCheckBox->setChecked(false); + QCheckBox *reverseValueAxisCheckBox = new QCheckBox(widget); + reverseValueAxisCheckBox->setText(QStringLiteral("Reverse value axis")); + reverseValueAxisCheckBox->setChecked(false); + //! [4] QSlider *rotationSliderX = new QSlider(Qt::Horizontal, widget); rotationSliderX->setTickInterval(30); @@ -179,6 +183,21 @@ int main(int argc, char **argv) rangeList->addItem(QStringLiteral("All")); rangeList->setCurrentIndex(8); + QCheckBox *axisTitlesVisibleCB = new QCheckBox(widget); + axisTitlesVisibleCB->setText(QStringLiteral("Axis titles visible")); + axisTitlesVisibleCB->setChecked(true); + + QCheckBox *axisTitlesFixedCB = new QCheckBox(widget); + axisTitlesFixedCB->setText(QStringLiteral("Axis titles fixed")); + axisTitlesFixedCB->setChecked(true); + + QSlider *axisLabelRotationSlider = new QSlider(Qt::Horizontal, widget); + axisLabelRotationSlider->setTickInterval(10); + axisLabelRotationSlider->setTickPosition(QSlider::TicksBelow); + axisLabelRotationSlider->setMinimum(0); + axisLabelRotationSlider->setValue(30); + axisLabelRotationSlider->setMaximum(90); + //! [5] vLayout->addWidget(new QLabel(QStringLiteral("Rotate horizontally"))); vLayout->addWidget(rotationSliderX, 0, Qt::AlignTop); @@ -191,6 +210,9 @@ int main(int argc, char **argv) vLayout->addWidget(gridCheckBox); vLayout->addWidget(smoothCheckBox); vLayout->addWidget(seriesCheckBox); + vLayout->addWidget(reverseValueAxisCheckBox); + vLayout->addWidget(axisTitlesVisibleCB); + vLayout->addWidget(axisTitlesFixedCB); vLayout->addWidget(new QLabel(QStringLiteral("Show year"))); vLayout->addWidget(rangeList); vLayout->addWidget(new QLabel(QStringLiteral("Change bar style"))); @@ -204,7 +226,9 @@ int main(int argc, char **argv) vLayout->addWidget(new QLabel(QStringLiteral("Change font"))); vLayout->addWidget(fontList); vLayout->addWidget(new QLabel(QStringLiteral("Adjust font size"))); - vLayout->addWidget(fontSizeSlider, 1, Qt::AlignTop); + vLayout->addWidget(fontSizeSlider); + vLayout->addWidget(new QLabel(QStringLiteral("Axis label rotation"))); + vLayout->addWidget(axisLabelRotationSlider, 1, Qt::AlignTop); //! [2] GraphModifier *modifier = new GraphModifier(widgetgraph); @@ -228,6 +252,8 @@ int main(int argc, char **argv) &GraphModifier::setSmoothBars); QObject::connect(seriesCheckBox, &QCheckBox::stateChanged, modifier, &GraphModifier::setSeriesVisibility); + QObject::connect(reverseValueAxisCheckBox, &QCheckBox::stateChanged, modifier, + &GraphModifier::setReverseValueAxis); QObject::connect(modifier, &GraphModifier::backgroundEnabledChanged, backgroundCheckBox, &QCheckBox::setChecked); @@ -264,6 +290,12 @@ int main(int argc, char **argv) QObject::connect(modifier, &GraphModifier::fontChanged, fontList, &QFontComboBox::setCurrentFont); + QObject::connect(axisTitlesVisibleCB, &QCheckBox::stateChanged, modifier, + &GraphModifier::setAxisTitleVisibility); + QObject::connect(axisTitlesFixedCB, &QCheckBox::stateChanged, modifier, + &GraphModifier::setAxisTitleFixed); + QObject::connect(axisLabelRotationSlider, &QSlider::valueChanged, modifier, + &GraphModifier::changeLabelRotation); //! [3] widget->show(); return app.exec(); |