diff options
author | Mika Salmela <mika.salmela@digia.com> | 2013-09-17 11:48:54 +0300 |
---|---|---|
committer | Mika Salmela <mika.salmela@digia.com> | 2013-09-17 12:04:49 +0300 |
commit | ab8343a2df664545575b5233b74ea0329647c7df (patch) | |
tree | be72d823cbfb9fa22d1d2c9ff90229252e02d74e /examples/surfacechart | |
parent | dbc876fa0f9c5c87d0ee250efa4d7a211bde3ddf (diff) |
Misc bug fixes
- Enabled zooming on Surface C++ api
- User modified gradient takes effect
- Scene pointer is updated to selection pointer
- Font changing is listened on selection pointer and label's are generated
using selected font
- Selection label format copied from scatter. Looks to be very handy.
- Check for OpenGL 1.5 version and block coarse surface if below
- Added some theme handling. Not sure if the bug is fully fixed. Probably
requires shadow fixes to be fully similar to others.
- HAHAA. Now even single rows and columns supported. Even one value will
produce surface
Task-number: QTRD-2279
Task-number: QTRD-2265
Task-number: QTRD-2261
Task-number: QTRD-2269
Task-number: QTRD-2268
Task-number: QTRD-2272
Change-Id: Id34d843b2898e4cf1e4dde10ce23e0eaab4738a7
Signed-off-by: Mika Salmela <mika.salmela@digia.com>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'examples/surfacechart')
-rw-r--r-- | examples/surfacechart/chartmodifier.cpp | 37 | ||||
-rw-r--r-- | examples/surfacechart/chartmodifier.h | 8 | ||||
-rw-r--r-- | examples/surfacechart/main.cpp | 88 |
3 files changed, 95 insertions, 38 deletions
diff --git a/examples/surfacechart/chartmodifier.cpp b/examples/surfacechart/chartmodifier.cpp index e904dae2..b1c6a71f 100644 --- a/examples/surfacechart/chartmodifier.cpp +++ b/examples/surfacechart/chartmodifier.cpp @@ -30,7 +30,8 @@ ChartModifier::ChartModifier(Q3DSurface *chart) : m_chart(chart), m_xCount(10), m_zCount(10), - m_activeSample(0) + m_activeSample(0), + m_fontSize(40.0f) { m_chart->setAxisX(new Q3DValueAxis); m_chart->setAxisY(new Q3DValueAxis); @@ -133,7 +134,6 @@ void ChartModifier::setHeightMapData(bool enable) int p = image.width() * 4 * (image.height() - 1); dataArray->reserve(image.height()); - qDebug() << image.height() << image.width(); for (int i = image.height(); i > 0; i--, p -= image.width() * 4) { QSurfaceDataRow *newRow = new QSurfaceDataRow(image.width()); for (int j = 0; j < image.width(); j++) @@ -186,6 +186,39 @@ void ChartModifier::adjustZCount(int count) qDebug() << "Z count = " << count; } +void ChartModifier::colorPressed() +{ + m_chart->setGradientColorAt(0.0, Qt::blue); +} + +void ChartModifier::changeFont(const QFont &font) +{ + QFont newFont = font; + newFont.setPointSizeF(m_fontSize); + m_chart->setFont(newFont); +} + +void ChartModifier::changeTransparency() +{ + static int transparency = QDataVis::TransparencyNone; + + m_chart->setLabelTransparency((QDataVis::LabelTransparency)transparency); + + if (++transparency > QDataVis::TransparencyNoBackground) + transparency = QDataVis::TransparencyNone; +} + +void ChartModifier::changeTheme(int theme) +{ + m_chart->setTheme((QDataVis::ColorTheme)theme); +} + +void ChartModifier::changeShadowQuality(int quality) +{ + QDataVis::ShadowQuality sq = QDataVis::ShadowQuality(quality); + m_chart->setShadowQuality(sq); +} + void ChartModifier::updateSamples() { switch (m_activeSample) { diff --git a/examples/surfacechart/chartmodifier.h b/examples/surfacechart/chartmodifier.h index 1de5840e..ad0ea162 100644 --- a/examples/surfacechart/chartmodifier.h +++ b/examples/surfacechart/chartmodifier.h @@ -48,6 +48,13 @@ public: void adjustXCount(int count); void adjustZCount(int count); void updateSamples(); + void colorPressed(); + void changeFont(const QFont &font); + void changeTransparency(); + +public slots: + void changeShadowQuality(int quality); + void changeTheme(int theme); private: Q3DSurface *m_chart; @@ -57,6 +64,7 @@ private: int m_xCount; int m_zCount; int m_activeSample; + int m_fontSize; }; #endif // CHARTMODIFIER_H diff --git a/examples/surfacechart/main.cpp b/examples/surfacechart/main.cpp index 7a989adf..02d5e7a0 100644 --- a/examples/surfacechart/main.cpp +++ b/examples/surfacechart/main.cpp @@ -30,6 +30,7 @@ #include <QLabel> #include <QScreen> #include <QPainter> +#include <QFontComboBox> #include <QDebug> using namespace QtDataVisualization; @@ -84,19 +85,19 @@ int main(int argc, char *argv[]) QSlider *gridSliderX = new QSlider(Qt::Horizontal, widget); gridSliderX->setTickInterval(1); - gridSliderX->setMinimum(2); + gridSliderX->setMinimum(1); gridSliderX->setValue(10); gridSliderX->setMaximum(200); gridSliderX->setEnabled(true); QSlider *gridSliderZ = new QSlider(Qt::Horizontal, widget); gridSliderZ->setTickInterval(1); - gridSliderZ->setMinimum(2); + gridSliderZ->setMinimum(1); gridSliderZ->setValue(10); gridSliderZ->setMaximum(200); gridSliderZ->setEnabled(true); QLinearGradient gr(0, 0, 100, 1); - gr.setColorAt(0.0, Qt::green); + gr.setColorAt(0.0, Qt::blue); gr.setColorAt(0.5, Qt::yellow); gr.setColorAt(1.0, Qt::red); QPixmap pm(100, 24); @@ -104,11 +105,36 @@ int main(int argc, char *argv[]) pmp.setBrush(QBrush(gr)); pmp.setPen(Qt::NoPen); pmp.drawRect(0, 0, 100, 24); - //pm.save("C:\\Users\\misalmel\\Work\\test.png", "png"); - QPushButton *color = new QPushButton(); - color->setIcon(QIcon(pm)); - color->setIconSize(QSize(100, 24)); - color->setFlat(true); + QPushButton *colorPB = new QPushButton(); + colorPB->setIcon(QIcon(pm)); + colorPB->setIconSize(QSize(100, 24)); + + QFontComboBox *fontList = new QFontComboBox(widget); + fontList->setCurrentFont(QFont("Arial")); + + QPushButton *labelButton = new QPushButton(widget); + labelButton->setText(QStringLiteral("Change label style")); + + 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); + + QComboBox *shadowQuality = new QComboBox(widget); + shadowQuality->addItem(QStringLiteral("None")); + shadowQuality->addItem(QStringLiteral("Low")); + shadowQuality->addItem(QStringLiteral("Medium")); + shadowQuality->addItem(QStringLiteral("High")); + shadowQuality->addItem(QStringLiteral("Low Soft")); + shadowQuality->addItem(QStringLiteral("Medium Soft")); + shadowQuality->addItem(QStringLiteral("High Soft")); + shadowQuality->setCurrentIndex(3); // Add controls to the layout vLayout->addWidget(smoothCB); @@ -121,7 +147,14 @@ int main(int argc, char *argv[]) vLayout->addWidget(gridSlidersLockCB); vLayout->addWidget(gridSliderX); vLayout->addWidget(gridSliderZ); - vLayout->addWidget(color); + vLayout->addWidget(colorPB); + vLayout->addWidget(new QLabel(QStringLiteral("Change font"))); + vLayout->addWidget(fontList); + vLayout->addWidget(labelButton); + vLayout->addWidget(new QLabel(QStringLiteral("Change theme"))); + vLayout->addWidget(themeList); + vLayout->addWidget(new QLabel(QStringLiteral("Adjust shadow quality"))); + vLayout->addWidget(shadowQuality); widget->show(); @@ -144,37 +177,20 @@ int main(int argc, char *argv[]) modifier, &ChartModifier::adjustXCount); QObject::connect(gridSliderZ, &QSlider::valueChanged, modifier, &ChartModifier::adjustZCount); + QObject::connect(colorPB, &QPushButton::pressed, + modifier, &ChartModifier::colorPressed); + QObject::connect(fontList, &QFontComboBox::currentFontChanged, + modifier, &ChartModifier::changeFont); + QObject::connect(labelButton, &QPushButton::clicked, + modifier, &ChartModifier::changeTransparency); + QObject::connect(themeList, SIGNAL(currentIndexChanged(int)), + modifier, SLOT(changeTheme(int))); + QObject::connect(shadowQuality, SIGNAL(currentIndexChanged(int)), + modifier, SLOT(changeShadowQuality(int))); modifier->setGridSliderZ(gridSliderZ); modifier->setGridSliderX(gridSliderX); modifier->toggleGridSliderLock(gridSlidersLockCB->checkState()); -// QList<qreal> lowList; -// lowList << 15.0 << 35.0 << 55.0 << 75.0 << 80.0 << 75.0 << 55.0 << 35.0 << 15.0; -// lowList << 65.0 << 105.0 << 135.0 << 155.0 << 190.0 << 155.0 << 135.0 << 105.0 << 65.0; -// lowList << 105.0 << 170.0 << 215.0 << 240.0 << 245.0 << 240.0 << 215.0 << 170.0 << 105.0; -// lowList << 65.0 << 105.0 << 135.0 << 155.0 << 190.0 << 155.0 << 135.0 << 105.0 << 65.0; -// lowList << 15.0 << 35.0 << 55.0 << 75.0 << 80.0 << 75.0 << 55.0 << 35.0 << 16.1; - -// lowList << 15.0 << 65.0 << 105.0 << 65.0 << 15.0; -// lowList << 35.0 << 105.0 << 170.0 << 105.0 << 35; -// lowList << 55.0 << 135.0 << 215.0 << 135.0 << 55; -// lowList << 75.0 << 155.0 << 240.0 << 155.0 << 75; -// lowList << 80.0 << 190.0 << 245.0 << 190.0 << 80; -// lowList << 75.0 << 155.0 << 240.0 << 155.0 << 75.0; -// lowList << 55.0 << 135.0 << 215.0 << 135.0 << 55; -// lowList << 35.0 << 105.0 << 170.0 << 105.0 << 35.0; -// lowList << 15.0 << 65.0 << 105.0 << 65.0 << 16.1; - -// surfaceChart->appendSeries(lowList, 9, 5); - -// QList<qreal> topList; -// topList << 2.1 << 2.2; -// surfaceChart.appendSeries(topList); - -// surfaceChart.resize(screenSize.width() / 1.5, screenSize.height() / 1.5); -// surfaceChart.setPosition(screenSize.width() / 6, screenSize.height() / 6); -// surfaceChart.show(); - return app.exec(); } |