diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-07-05 11:34:47 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-07-05 12:52:57 +0300 |
commit | 03276f3187bc58162e335b9a5739c1631344fa84 (patch) | |
tree | d491698251a0320fd2f8eadf8cd262211baebb59 /examples | |
parent | 0963cf7feda67225700f4291264e68c9060046f6 (diff) |
Miscellaneous fixes
- Widget example now uses default QBarDataProxy directly
- Axes store labels in QStringLists instead of vectors
- Axes LabelItems as QList<LabelItem *> instead of QVector<LabelItem>
This allows better control of when label items are constructed
and destructed -> easier to keep track of textures.
- Removed label setting from QAbstractDataItem api, it should be
replaced with label format setter if we want individual items
to have custom labels.
- Added functionality to QBarDataItem
- Misc bug fixes
Change-Id: I01b3a5f3fc4acb8c1a826f19fa2762864430a088
Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/barchart/main.cpp | 10 | ||||
-rw-r--r-- | examples/qmlbarchart/qml/qmlbarchart/main.qml | 2 | ||||
-rw-r--r-- | examples/rainfall/main.cpp | 6 | ||||
-rw-r--r-- | examples/spectrum/spectrumapp/main.cpp | 2 | ||||
-rw-r--r-- | examples/widget/chart.cpp | 63 | ||||
-rw-r--r-- | examples/widget/chart.h | 4 |
6 files changed, 53 insertions, 34 deletions
diff --git a/examples/barchart/main.cpp b/examples/barchart/main.cpp index caa5b9dc..040be325 100644 --- a/examples/barchart/main.cpp +++ b/examples/barchart/main.cpp @@ -94,7 +94,7 @@ ChartDataGenerator::ChartDataGenerator(Q3DBars *barchart) #ifndef USE_STATIC_DATA // Set up sample space; make it as deep as it's wide - m_chart->setupSampleSpace(m_columnCount, m_rowCount); + m_chart->setupSampleSpace(m_rowCount, m_columnCount); #endif // Set bar type to smooth bar @@ -201,7 +201,7 @@ void ChartDataGenerator::addDataSet() row.clear(); } // Set up sample space based on inserted data - m_chart->setupSampleSpace(m_columnCount, m_rowCount); + m_chart->setupSampleSpace(m_rowCount, m_columnCount); // Add data to chart m_chart->addDataSet(data); #else @@ -212,9 +212,9 @@ void ChartDataGenerator::addDataSet() m_chart->setWindowTitle(QStringLiteral("Hours playing banjo")); // Set up row and column names - QVector<QString> days; + QStringList days; days << "Monday" << "Tuesday" << "Wednesday" << "Thursday" << "Friday" << "Saturday" << "Sunday"; - QVector<QString> weeks; + QStringList weeks; weeks << "week 1" << "week 2" << "week 3" << "week 4" << "week 5"; // Set up data Mon Tue Wed Thu Fri Sat Sun @@ -253,7 +253,7 @@ void ChartDataGenerator::addDataSet() } // Set up sample space based on prepared data - m_chart->setupSampleSpace(days.size(), weeks.size()); + m_chart->setupSampleSpace(weeks.size(), days.size()); // Add data to chart static_cast<QOldDataProxy *>(m_chart->dataProxy())->addDataSet(dataSet); diff --git a/examples/qmlbarchart/qml/qmlbarchart/main.qml b/examples/qmlbarchart/qml/qmlbarchart/main.qml index 28b3326d..748a5241 100644 --- a/examples/qmlbarchart/qml/qmlbarchart/main.qml +++ b/examples/qmlbarchart/qml/qmlbarchart/main.qml @@ -125,7 +125,7 @@ Item { testset1.addRow(testrow1); testset1.addRow(testrow2); - testchart.setupSampleSpace(4, 2); + testchart.setupSampleSpace(2, 4); testchart.addDataSet(testset1); } diff --git a/examples/rainfall/main.cpp b/examples/rainfall/main.cpp index 46757e46..be1b120f 100644 --- a/examples/rainfall/main.cpp +++ b/examples/rainfall/main.cpp @@ -74,12 +74,12 @@ RainfallChart::RainfallChart(Q3DBars *rainfall) m_chart->setBarSpecs(QSizeF(1.0f, 1.0f), QSizeF(0.2f, 0.2f), true); // Set up sample space; make it match actual data size - m_chart->setupSampleSpace(m_columnCount, m_rowCount); + m_chart->setupSampleSpace(m_rowCount, m_columnCount); // Set axis labels and titles - QVector<QString> months; + QStringList months; months << "January" << "February" << "March" << "April" << "May" << "June" << "July" << "August" << "September" << "October" << "November" << "December"; - QVector<QString> years; + QStringList years; years << "2000" << "2001" << "2002" << "2003" << "2004" << "2005" << "2006" << "2007" << "2008" << "2009" << "2010" << "2011" << "2012"; m_chart->rowAxis()->setTitle("Year"); diff --git a/examples/spectrum/spectrumapp/main.cpp b/examples/spectrum/spectrumapp/main.cpp index 19f195fa..2fa0be8f 100644 --- a/examples/spectrum/spectrumapp/main.cpp +++ b/examples/spectrum/spectrumapp/main.cpp @@ -86,7 +86,7 @@ MainApp::MainApp(Q3DBars *window) m_lowFreq(SpectrumLowFreq), m_highFreq(SpectrumHighFreq) { - m_chart->setupSampleSpace(SpectrumNumBands, SpectrumNumBands * 2); + m_chart->setupSampleSpace(SpectrumNumBands * 2, SpectrumNumBands); // Disable grid m_chart->setGridVisible(false); // Disable auto-scaling of height by defining tick count and step, even though we don't draw grid diff --git a/examples/widget/chart.cpp b/examples/widget/chart.cpp index 00cdd3c3..f2928f7b 100644 --- a/examples/widget/chart.cpp +++ b/examples/widget/chart.cpp @@ -41,9 +41,9 @@ #include "chart.h" #include "qcategoryaxis.h" #include "qvalueaxis.h" -#include "qolddataproxy.h" +#include "qbardataproxy.h" -using namespace QtDataVis3D; +QT_DATAVIS3D_USE_NAMESPACE const QString celsiusString = QString(QChar(0xB0)) + "C"; @@ -64,6 +64,12 @@ ChartModifier::ChartModifier(Q3DBars *barchart) m_minval(-15.2f) { // Don't set any styles or specifications, start from defaults + // Generate generic labels + for (int i = 0; i < m_rowCount; i++) + m_genericRowLabels << QStringLiteral("Row %1").arg(i); + for (int i = 0; i < m_columnCount; i++) + m_genericColumnLabels << QStringLiteral("Column %1").arg(i); + } ChartModifier::~ChartModifier() @@ -88,12 +94,20 @@ void ChartModifier::restart(bool dynamicData) m_chart->setFont(QFont("Times Roman", 20)); m_chart->setTickCount(m_ticks, m_tickStep, m_minval); } else { + m_chart->dataProxy()->resetArray(0, 0); // Set up sample space - m_chart->setupSampleSpace(m_columnCount, m_rowCount); + m_chart->setupSampleSpace(m_rowCount, m_columnCount); // Set selection mode to full m_chart->setSelectionMode(ModeBarRowAndColumn); // Reset tick count to default m_chart->setTickCount(0, 0); + + m_chart->rowAxis()->setTitle("Generic Row"); + m_chart->columnAxis()->setTitle("Generic Column"); + m_chart->valueAxis()->setTitle("Generic Value"); + + m_chart->rowAxis()->setLabels(QStringList()); + m_chart->columnAxis()->setLabels(m_genericColumnLabels); } } @@ -106,9 +120,9 @@ void ChartModifier::addDataSet() m_chart->setWindowTitle(QStringLiteral("Average temperatures in Oulu, Finland (2006-2012)")); // Set up row and column names - QVector<QString> months; + QStringList months; months << "January" << "February" << "March" << "April" << "May" << "June" << "July" << "August" << "September" << "October" << "November" << "December"; - QVector<QString> years; + QStringList years; years << "2006" << "2007" << "2008" << "2009" << "2010" << "2011" << "2012"; // Set up data @@ -120,8 +134,9 @@ void ChartModifier::addDataSet() {-9.0f, -15.2f, -3.8f, 2.6f, 8.3f, 15.9f, 18.6f, 14.9f, 11.1f, 5.3f, 1.8f, -0.2f}, // 2011 {-8.7f, -11.3f, -2.3f, 0.4f, 7.5f, 12.2f, 16.4f, 14.1f, 9.2f, 3.1f, 0.3f, -12.1f}}; // 2012 - // Create data set - QDataSet *dataSet = new QDataSet(); + // Use default data proxy to feed data directly in expected format + QBarDataProxy *proxy = m_chart->dataProxy(); + proxy->setItemLabelFormat(celsiusString); // Add labels m_chart->rowAxis()->setTitle("Year"); @@ -131,18 +146,19 @@ void ChartModifier::addDataSet() m_chart->columnAxis()->setLabels(months); // Create data rows - QDataRow *dataRow; + QBarDataArray *dataSet = new QBarDataArray; + QBarDataRow *dataRow; + + dataSet->reserve(years.size()); for (int year = 0; year < years.size(); year++) { - dataRow = new QDataRow(); + dataRow = new QBarDataRow; // Create data items for (int month = 0; month < months.size(); month++) { // Add data to rows - dataRow->addItem(new QDataItem(temp[year][month], celsiusString)); + dataRow->append(new QBarDataItem(temp[year][month])); } // Add row to set - dataSet->addRow(dataRow); - // Get next pointer - dataRow++; + dataSet->append(dataRow); } // Set tick count (4 steps of 5 degrees, with absolute minimum of -16C, even though we don't have quite that low temperatures in the data) @@ -151,20 +167,21 @@ void ChartModifier::addDataSet() m_chart->setTickCount(m_ticks, m_tickStep, m_minval); // Set up sample space based on prepared data - m_chart->setupSampleSpace(months.size(), years.size()); + m_chart->setupSampleSpace(years.size(), months.size()); - QOldDataProxy *proxy = new QOldDataProxy; - m_chart->setDataProxy(proxy); - // Add data to chart - static_cast<QOldDataProxy *>(m_chart->dataProxy())->addDataSet(dataSet); + // Add data to chart (chart assumes ownership) + proxy->resetArray(dataSet); } void ChartModifier::addBars() { - QVector<float> data; + QBarDataRow *dataRow = new QBarDataRow; for (float i = 0; i < m_columnCount; i++) - data.append(((i + 1) / (float)m_columnCount) * (float)(rand() % 100)); - static_cast<QOldDataProxy *>(m_chart->dataProxy())->addDataRow(data); + dataRow->append(new QBarDataItem(i + m_chart->dataProxy()->rowCount())); + //dataRow->append(new QBarDataItem(((i + 1) / (float)m_columnCount) * (float)(rand() % 100))); + m_chart->dataProxy()->insertRow(0, dataRow); + if (m_chart->dataProxy()->rowCount() <= m_rowCount) + m_chart->rowAxis()->setLabels(m_genericRowLabels.mid(0, m_chart->dataProxy()->rowCount())); } void ChartModifier::changeStyle() @@ -347,11 +364,11 @@ void ChartModifier::setSpacingSpecsZ(int spacing) void ChartModifier::setSampleCountX(int samples) { m_columnCount = samples; - m_chart->setupSampleSpace(m_columnCount, m_rowCount); + m_chart->setupSampleSpace(m_rowCount, m_columnCount); } void ChartModifier::setSampleCountZ(int samples) { m_rowCount = samples; - m_chart->setupSampleSpace(m_columnCount, m_rowCount); + m_chart->setupSampleSpace(m_rowCount, m_columnCount); } diff --git a/examples/widget/chart.h b/examples/widget/chart.h index 20748564..3c943588 100644 --- a/examples/widget/chart.h +++ b/examples/widget/chart.h @@ -42,10 +42,10 @@ #define CHARTMODIFIER_H #include "q3dbars.h" -#include "qdataset.h" #include <QFont> #include <QDebug> +#include <QStringList> using namespace QtDataVis3D; @@ -100,6 +100,8 @@ private: int m_ticks; float m_tickStep; float m_minval; + QStringList m_genericRowLabels; + QStringList m_genericColumnLabels; }; #endif |