From 1262c6562d7264c9fe4caf2f433615348c0f2ef8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomi=20Korpip=C3=A4=C3=A4?= Date: Thu, 12 Sep 2013 09:58:55 +0300 Subject: Improved scatterchart example Task-number: QTRD-2239 + changed some buttons to comboboxes Change-Id: I87486497d1684b246d481413f31de1419a78eee4 Change-Id: I87486497d1684b246d481413f31de1419a78eee4 Reviewed-by: Miikka Heikkinen --- examples/scatterchart/main.cpp | 52 ++++++++++++++++++++++++---------- examples/scatterchart/scatterchart.cpp | 47 ++++++++++++++---------------- examples/scatterchart/scatterchart.h | 5 ++++ 3 files changed, 64 insertions(+), 40 deletions(-) (limited to 'examples/scatterchart') diff --git a/examples/scatterchart/main.cpp b/examples/scatterchart/main.cpp index cdbc6ec9..635ea0a5 100644 --- a/examples/scatterchart/main.cpp +++ b/examples/scatterchart/main.cpp @@ -52,14 +52,28 @@ int main(int argc, char **argv) hLayout->addWidget(container, 1); hLayout->addLayout(vLayout); - QPushButton *themeButton = new QPushButton(widget); - themeButton->setText(QStringLiteral("Change theme")); + QComboBox *themeList = new QComboBox(widget); + themeList->addItem(QStringLiteral("System")); + themeList->addItem(QStringLiteral("Blue Cerulean")); + themeList->addItem(QStringLiteral("Blue Icy")); + themeList->addItem(QStringLiteral("Blue Ncs")); + themeList->addItem(QStringLiteral("Brown Sand")); + themeList->addItem(QStringLiteral("Dark")); + themeList->addItem(QStringLiteral("High Contrast")); + themeList->addItem(QStringLiteral("Light")); + themeList->setCurrentIndex(4); QPushButton *labelButton = new QPushButton(widget); labelButton->setText(QStringLiteral("Change label style")); - QPushButton *styleButton = new QPushButton(widget); - styleButton->setText(QStringLiteral("Change item style")); + QCheckBox *smoothCheckBox = new QCheckBox(widget); + smoothCheckBox->setText(QStringLiteral("Smooth dots")); + smoothCheckBox->setChecked(true); + + QComboBox *barStyleList = new QComboBox(widget); + barStyleList->addItem(QStringLiteral("Sphere")); + barStyleList->addItem(QStringLiteral("Tetrahedron")); + barStyleList->setCurrentIndex(0); QPushButton *cameraButton = new QPushButton(widget); cameraButton->setText(QStringLiteral("Change camera preset")); @@ -85,12 +99,15 @@ int main(int argc, char **argv) QFontComboBox *fontList = new QFontComboBox(widget); fontList->setCurrentFont(QFont("Arial")); - vLayout->addWidget(themeButton, 0, Qt::AlignTop); vLayout->addWidget(labelButton, 0, Qt::AlignTop); - vLayout->addWidget(styleButton, 0, Qt::AlignTop); vLayout->addWidget(cameraButton, 0, Qt::AlignTop); vLayout->addWidget(backgroundCheckBox); vLayout->addWidget(gridCheckBox); + vLayout->addWidget(smoothCheckBox, 0, Qt::AlignTop); + vLayout->addWidget(new QLabel(QStringLiteral("Change dot style"))); + vLayout->addWidget(barStyleList); + vLayout->addWidget(new QLabel(QStringLiteral("Change theme"))); + vLayout->addWidget(themeList); vLayout->addWidget(new QLabel(QStringLiteral("Adjust shadow quality"))); vLayout->addWidget(shadowQuality); vLayout->addWidget(new QLabel(QStringLiteral("Change font"))); @@ -100,17 +117,27 @@ int main(int argc, char **argv) ScatterDataModifier *modifier = new ScatterDataModifier(chart); - QObject::connect(styleButton, &QPushButton::clicked, modifier, - &ScatterDataModifier::changeStyle); QObject::connect(cameraButton, &QPushButton::clicked, modifier, &ScatterDataModifier::changePresetCamera); - QObject::connect(themeButton, &QPushButton::clicked, modifier, - &ScatterDataModifier::changeTheme); QObject::connect(labelButton, &QPushButton::clicked, modifier, &ScatterDataModifier::changeTransparency); + QObject::connect(backgroundCheckBox, &QCheckBox::stateChanged, modifier, + &ScatterDataModifier::setBackgroundEnabled); + QObject::connect(gridCheckBox, &QCheckBox::stateChanged, modifier, + &ScatterDataModifier::setGridEnabled); + QObject::connect(smoothCheckBox, &QCheckBox::stateChanged, modifier, + &ScatterDataModifier::setSmoothDots); + + QObject::connect(barStyleList, SIGNAL(currentIndexChanged(int)), modifier, + SLOT(changeStyle(int))); + + QObject::connect(themeList, SIGNAL(currentIndexChanged(int)), modifier, + SLOT(changeTheme(int))); + QObject::connect(shadowQuality, SIGNAL(currentIndexChanged(int)), modifier, SLOT(changeShadowQuality(int))); + QObject::connect(modifier, &ScatterDataModifier::shadowQualityChanged, shadowQuality, &QComboBox::setCurrentIndex); QObject::connect(chart, &Q3DScatter::shadowQualityChanged, modifier, @@ -119,11 +146,6 @@ int main(int argc, char **argv) QObject::connect(fontList, &QFontComboBox::currentFontChanged, modifier, &ScatterDataModifier::changeFont); - QObject::connect(backgroundCheckBox, &QCheckBox::stateChanged, modifier, - &ScatterDataModifier::setBackgroundEnabled); - QObject::connect(gridCheckBox, &QCheckBox::stateChanged, modifier, - &ScatterDataModifier::setGridEnabled); - modifier->start(); return app.exec(); diff --git a/examples/scatterchart/scatterchart.cpp b/examples/scatterchart/scatterchart.cpp index a7571252..f68b8ad5 100644 --- a/examples/scatterchart/scatterchart.cpp +++ b/examples/scatterchart/scatterchart.cpp @@ -28,7 +28,9 @@ const int numberOfItems = 10000; ScatterDataModifier::ScatterDataModifier(Q3DScatter *scatter) : m_chart(scatter), - m_fontSize(40.0f) + m_fontSize(40.0f), + m_style(QDataVis::Spheres), + m_smooth(true) { QFont font = m_chart->font(); font.setPointSize(m_fontSize); @@ -88,26 +90,21 @@ void ScatterDataModifier::addData() static_cast(m_chart->activeDataProxy())->resetArray(dataArray); } -void ScatterDataModifier::changeStyle() -{ - static int model = 0; - switch (model) { - case 0: - m_chart->setObjectType(QDataVis::Dots, false); - break; - case 1: - m_chart->setObjectType(QDataVis::Dots, true); - break; - case 2: - m_chart->setObjectType(QDataVis::Spheres, false); - break; - case 3: - m_chart->setObjectType(QDataVis::Spheres, true); - break; - } - model++; - if (model > 3) - model = 0; +void ScatterDataModifier::changeStyle(int style) +{ + m_style = QDataVis::MeshStyle(style + 5); // skip unsupported mesh types + m_chart->setObjectType(m_style, m_smooth); +} + +void ScatterDataModifier::setSmoothDots(int smooth) +{ + m_smooth = bool(smooth); + m_chart->setObjectType(m_style, m_smooth); +} + +void ScatterDataModifier::changeTheme(int theme) +{ + m_chart->setTheme((QDataVis::ColorTheme)theme); } void ScatterDataModifier::changePresetCamera() @@ -150,7 +147,7 @@ void ScatterDataModifier::changeFont(const QFont &font) void ScatterDataModifier::shadowQualityUpdatedByVisual(QDataVis::ShadowQuality sq) { int quality = int(sq); - // Updates the UI component to show correct shadow quality + // Updates the UI component to show correct shadow quality emit shadowQualityChanged(quality); } @@ -174,7 +171,7 @@ void ScatterDataModifier::setGridEnabled(int enabled) QVector3D ScatterDataModifier::randVector() { return QVector3D( - (float)(rand() % 100) / 2.0f - (float)(rand() % 100) / 2.0f, - (float)(rand() % 100) / 100.0f - (float)(rand() % 100) / 100.0f, - (float)(rand() % 100) / 2.0f - (float)(rand() % 100) / 2.0f); + (float)(rand() % 100) / 2.0f - (float)(rand() % 100) / 2.0f, + (float)(rand() % 100) / 100.0f - (float)(rand() % 100) / 100.0f, + (float)(rand() % 100) / 2.0f - (float)(rand() % 100) / 2.0f); } diff --git a/examples/scatterchart/scatterchart.h b/examples/scatterchart/scatterchart.h index f19eb60f..9a1726b9 100644 --- a/examples/scatterchart/scatterchart.h +++ b/examples/scatterchart/scatterchart.h @@ -40,9 +40,12 @@ public: void changeFontSize(int fontsize); void setBackgroundEnabled(int enabled); void setGridEnabled(int enabled); + void setSmoothDots(int smooth); void start(); public slots: + void changeStyle(int style); + void changeTheme(int theme); void changeShadowQuality(int quality); void shadowQualityUpdatedByVisual(QDataVis::ShadowQuality shadowQuality); @@ -53,6 +56,8 @@ private: QVector3D randVector(); Q3DScatter *m_chart; int m_fontSize; + QDataVis::MeshStyle m_style; + bool m_smooth; }; #endif -- cgit v1.2.3