summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2014-01-28 11:02:22 +0200
committerTomi Korpipää <tomi.korpipaa@digia.com>2014-01-28 11:56:27 +0200
commit33e9f279770d79a9c0b57201b3e45e4061e39aaa (patch)
tree202b60320315993d1efd37e7a74dc285f8956858 /examples
parent73ed4e16a33c99271124f22fb6ea7e253888d92d (diff)
Added item count toggle to scatter example
Task-number: QTRD-2563 Change-Id: Ia98cd98a18ff892ecb44780a6149a4478316e1dc Change-Id: Ia98cd98a18ff892ecb44780a6149a4478316e1dc Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/scatter/main.cpp6
-rw-r--r--examples/scatter/scatterdatamodifier.cpp33
-rw-r--r--examples/scatter/scatterdatamodifier.h3
3 files changed, 34 insertions, 8 deletions
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