From 33e9f279770d79a9c0b57201b3e45e4061e39aaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomi=20Korpip=C3=A4=C3=A4?= Date: Tue, 28 Jan 2014 11:02:22 +0200 Subject: Added item count toggle to scatter example Task-number: QTRD-2563 Change-Id: Ia98cd98a18ff892ecb44780a6149a4478316e1dc Change-Id: Ia98cd98a18ff892ecb44780a6149a4478316e1dc Reviewed-by: Miikka Heikkinen --- examples/scatter/main.cpp | 6 ++++++ examples/scatter/scatterdatamodifier.cpp | 33 ++++++++++++++++++++++++-------- examples/scatter/scatterdatamodifier.h | 3 +++ 3 files changed, 34 insertions(+), 8 deletions(-) (limited to 'examples/scatter') diff --git a/examples/scatter/main.cpp b/examples/scatter/main.cpp index dc71667f..d1dad77d 100644 --- a/examples/scatter/main.cpp +++ b/examples/scatter/main.cpp @@ -83,6 +83,9 @@ int main(int argc, char **argv) QPushButton *cameraButton = new QPushButton(widget); cameraButton->setText(QStringLiteral("Change camera preset")); + QPushButton *itemCountButton = new QPushButton(widget); + itemCountButton->setText(QStringLiteral("Toggle item count")); + QCheckBox *backgroundCheckBox = new QCheckBox(widget); backgroundCheckBox->setText(QStringLiteral("Show background")); backgroundCheckBox->setChecked(true); @@ -108,6 +111,7 @@ int main(int argc, char **argv) //! [5] vLayout->addWidget(labelButton, 0, Qt::AlignTop); vLayout->addWidget(cameraButton, 0, Qt::AlignTop); + vLayout->addWidget(itemCountButton, 0, Qt::AlignTop); vLayout->addWidget(backgroundCheckBox); vLayout->addWidget(gridCheckBox); vLayout->addWidget(smoothCheckBox, 0, Qt::AlignTop); @@ -130,6 +134,8 @@ int main(int argc, char **argv) &ScatterDataModifier::changePresetCamera); QObject::connect(labelButton, &QPushButton::clicked, modifier, &ScatterDataModifier::changeLabelStyle); + QObject::connect(itemCountButton, &QPushButton::clicked, modifier, + &ScatterDataModifier::toggleItemCount); QObject::connect(backgroundCheckBox, &QCheckBox::stateChanged, modifier, &ScatterDataModifier::setBackgroundEnabled); diff --git a/examples/scatter/scatterdatamodifier.cpp b/examples/scatter/scatterdatamodifier.cpp index db2426ce..7192490e 100644 --- a/examples/scatter/scatterdatamodifier.cpp +++ b/examples/scatter/scatterdatamodifier.cpp @@ -31,12 +31,17 @@ using namespace QtDataVisualization; //#define RANDOM_SCATTER // Uncomment this to switch to random scatter const int numberOfItems = 3600; +const float curveDivider = 3.0f; +const int lowerNumberOfItems = 900; +const float lowerCurveDivider = 0.75f; ScatterDataModifier::ScatterDataModifier(Q3DScatter *scatter) : m_graph(scatter), m_fontSize(40.0f), m_style(QAbstract3DSeries::MeshSphere), - m_smooth(true) + m_smooth(true), + m_itemCount(lowerNumberOfItems), + m_curveDivider(lowerCurveDivider) { //! [0] m_graph->activeTheme()->setType(Q3DTheme::ThemeEbony); @@ -78,28 +83,27 @@ void ScatterDataModifier::addData() m_graph->axisX()->setTitle("X"); m_graph->axisY()->setTitle("Y"); m_graph->axisZ()->setTitle("Z"); - m_graph->axisX()->setRange(-30.0f, 30.0f); - m_graph->axisY()->setRange(-1.0f, 1.0f); - m_graph->axisZ()->setRange(-30.0f, 30.0f); //! [4] //! [5] QScatterDataArray *dataArray = new QScatterDataArray; - dataArray->resize(numberOfItems); + dataArray->resize(m_itemCount); QScatterDataItem *ptrToDataArray = &dataArray->first(); //! [5] #ifdef RANDOM_SCATTER - for (int i = 0; i < numberOfItems; i++) { + for (int i = 0; i < m_itemCount; i++) { ptrToDataArray->setPosition(randVector()); ptrToDataArray++; } #else //! [6] - float limit = qSqrt(numberOfItems) / 2.0f; + float limit = qSqrt(m_itemCount) / 2.0f; for (float i = -limit; i < limit; i++) { for (float j = -limit; j < limit; j++) { - ptrToDataArray->setPosition(QVector3D(i, qCos(qDegreesToRadians((i * j) / 3.0f)), j)); + ptrToDataArray->setPosition(QVector3D(i + 0.5f, + qCos(qDegreesToRadians((i * j) / m_curveDivider)), + j + 0.5f)); ptrToDataArray++; } } @@ -183,6 +187,19 @@ void ScatterDataModifier::setGridEnabled(int enabled) } //! [8] +void ScatterDataModifier::toggleItemCount() +{ + if (m_itemCount == numberOfItems) { + m_itemCount = lowerNumberOfItems; + m_curveDivider = lowerCurveDivider; + } else { + m_itemCount = numberOfItems; + m_curveDivider = curveDivider; + } + m_graph->seriesList().at(0)->dataProxy()->resetArray(0); + addData(); +} + QVector3D ScatterDataModifier::randVector() { return QVector3D( diff --git a/examples/scatter/scatterdatamodifier.h b/examples/scatter/scatterdatamodifier.h index e22f24c7..7cfe7ff8 100644 --- a/examples/scatter/scatterdatamodifier.h +++ b/examples/scatter/scatterdatamodifier.h @@ -41,6 +41,7 @@ public: void setBackgroundEnabled(int enabled); void setGridEnabled(int enabled); void setSmoothDots(int smooth); + void toggleItemCount(); void start(); public slots: @@ -61,6 +62,8 @@ private: int m_fontSize; QAbstract3DSeries::Mesh m_style; bool m_smooth; + int m_itemCount; + float m_curveDivider; }; #endif -- cgit v1.2.3