diff options
Diffstat (limited to 'examples')
-rw-r--r-- | examples/barchart/main.cpp | 5 | ||||
-rw-r--r-- | examples/rainfall/rainfallchart.cpp | 5 | ||||
-rw-r--r-- | examples/scatterchart/scatterchart.cpp | 44 | ||||
-rw-r--r-- | examples/spectrum/spectrumapp/main.cpp | 7 | ||||
-rw-r--r-- | examples/surfacechart/chartmodifier.cpp | 3 | ||||
-rw-r--r-- | examples/widget/chart.cpp | 71 | ||||
-rw-r--r-- | examples/widget/chart.h | 6 | ||||
-rw-r--r-- | examples/widget/main.cpp | 7 |
8 files changed, 80 insertions, 68 deletions
diff --git a/examples/barchart/main.cpp b/examples/barchart/main.cpp index c51aa12f..0f1a8252 100644 --- a/examples/barchart/main.cpp +++ b/examples/barchart/main.cpp @@ -70,9 +70,6 @@ ChartDataGenerator::ChartDataGenerator(Q3DBars *barchart, QTableWidget *tableWid m_rowCount(50), m_tableWidget(tableWidget) { - m_chart->setRowAxis(new QCategoryAxis); - m_chart->setColumnAxis(new QCategoryAxis); - m_chart->setValueAxis(new QValueAxis); // Set up bar specifications; make the bars as wide as they are deep, // and add a small space between the bars m_chart->setBarSpecs(1.0, QSizeF(0.2, 0.2)); @@ -301,7 +298,7 @@ int main(int argc, char **argv) // to row/column support and uses the Qt::DisplayRole role for value role by default. QItemModelBarDataMapping mapping; QItemModelBarDataProxy *proxy = new QItemModelBarDataProxy(tableWidget->model(), &mapping); - chart->setDataProxy(proxy); + chart->setActiveDataProxy(proxy); ChartDataGenerator *generator = new ChartDataGenerator(chart, tableWidget); generator->start(); diff --git a/examples/rainfall/rainfallchart.cpp b/examples/rainfall/rainfallchart.cpp index 5b0d5dd9..3b51afba 100644 --- a/examples/rainfall/rainfallchart.cpp +++ b/examples/rainfall/rainfallchart.cpp @@ -40,7 +40,7 @@ RainfallChart::RainfallChart(Q3DBars *rainfall) m_columnCount = m_numericMonths.size(); m_proxy = new VariantBarDataProxy; - m_chart->setDataProxy(m_proxy); + m_chart->setActiveDataProxy(m_proxy); updateYearsList(2000, 2012); @@ -51,9 +51,6 @@ RainfallChart::RainfallChart(Q3DBars *rainfall) // Set axis labels and titles QStringList months; months << "January" << "February" << "March" << "April" << "May" << "June" << "July" << "August" << "September" << "October" << "November" << "December"; - m_chart->setRowAxis(new QCategoryAxis); - m_chart->setColumnAxis(new QCategoryAxis); - m_chart->setValueAxis(new QValueAxis); m_chart->rowAxis()->setTitle("Year"); m_chart->columnAxis()->setTitle("Month"); m_chart->valueAxis()->setTitle(QString("rainfall in city %1").arg(m_city - 1)); diff --git a/examples/scatterchart/scatterchart.cpp b/examples/scatterchart/scatterchart.cpp index 3379de50..92b99652 100644 --- a/examples/scatterchart/scatterchart.cpp +++ b/examples/scatterchart/scatterchart.cpp @@ -44,7 +44,7 @@ ScatterDataModifier::ScatterDataModifier(Q3DScatter *scatter) QScatterDataProxy *proxy = new QScatterDataProxy; proxy->setItemLabelFormat("@xTitle: @xLabel @yTitle: @yLabel @zTitle: @zLabel"); - m_chart->setDataProxy(proxy); + m_chart->setActiveDataProxy(proxy); connect(&m_timer, &QTimer::timeout, this, &ScatterDataModifier::timeout); } @@ -88,7 +88,7 @@ void ScatterDataModifier::addData() } #endif - static_cast<QScatterDataProxy *>(m_chart->dataProxy())->resetArray(dataArray); + static_cast<QScatterDataProxy *>(m_chart->activeDataProxy())->resetArray(dataArray); } void ScatterDataModifier::changeStyle() @@ -179,15 +179,15 @@ void ScatterDataModifier::shadowQualityUpdatedByVisual(QDataVis::ShadowQuality s void ScatterDataModifier::clear() { - m_chart->dataProxy()->resetArray(0); + m_chart->activeDataProxy()->resetArray(0); qDebug() << m_loopCounter << "Cleared array"; } void ScatterDataModifier::addOne() { QScatterDataItem item(randVector()); - int addIndex = m_chart->dataProxy()->addItem(item); - qDebug() << m_loopCounter << "added one to index:" << addIndex << "array size:" << m_chart->dataProxy()->array()->size(); + int addIndex = m_chart->activeDataProxy()->addItem(item); + qDebug() << m_loopCounter << "added one to index:" << addIndex << "array size:" << m_chart->activeDataProxy()->array()->size(); } void ScatterDataModifier::addBunch() @@ -195,15 +195,15 @@ void ScatterDataModifier::addBunch() QScatterDataArray items(100); for (int i = 0; i < items.size(); i++) items[i].setPosition(randVector()); - int addIndex = m_chart->dataProxy()->addItems(items); - qDebug() << m_loopCounter << "added bunch to index:" << addIndex << "array size:" << m_chart->dataProxy()->array()->size(); + int addIndex = m_chart->activeDataProxy()->addItems(items); + qDebug() << m_loopCounter << "added bunch to index:" << addIndex << "array size:" << m_chart->activeDataProxy()->array()->size(); } void ScatterDataModifier::insertOne() { QScatterDataItem item(randVector()); - m_chart->dataProxy()->insertItem(0, item); - qDebug() << m_loopCounter << "Inserted one, array size:" << m_chart->dataProxy()->array()->size(); + m_chart->activeDataProxy()->insertItem(0, item); + qDebug() << m_loopCounter << "Inserted one, array size:" << m_chart->activeDataProxy()->array()->size(); } void ScatterDataModifier::insertBunch() @@ -211,43 +211,43 @@ void ScatterDataModifier::insertBunch() QScatterDataArray items(100); for (int i = 0; i < items.size(); i++) items[i].setPosition(randVector()); - m_chart->dataProxy()->insertItems(0, items); - qDebug() << m_loopCounter << "Inserted bunch, array size:" << m_chart->dataProxy()->array()->size(); + m_chart->activeDataProxy()->insertItems(0, items); + qDebug() << m_loopCounter << "Inserted bunch, array size:" << m_chart->activeDataProxy()->array()->size(); } void ScatterDataModifier::changeOne() { - if (m_selectedItem >= 0 && m_chart->dataProxy()->array()->size()) { + if (m_selectedItem >= 0 && m_chart->activeDataProxy()->array()->size()) { QScatterDataItem item(randVector()); - m_chart->dataProxy()->setItem(m_selectedItem, item); - qDebug() << m_loopCounter << "Changed one, array size:" << m_chart->dataProxy()->array()->size(); + m_chart->activeDataProxy()->setItem(m_selectedItem, item); + qDebug() << m_loopCounter << "Changed one, array size:" << m_chart->activeDataProxy()->array()->size(); } } void ScatterDataModifier::changeBunch() { - if (m_chart->dataProxy()->array()->size()) { - int amount = qMin(m_chart->dataProxy()->array()->size(), 100); + if (m_chart->activeDataProxy()->array()->size()) { + int amount = qMin(m_chart->activeDataProxy()->array()->size(), 100); QScatterDataArray items(amount); for (int i = 0; i < items.size(); i++) items[i].setPosition(randVector()); - m_chart->dataProxy()->setItems(0, items); - qDebug() << m_loopCounter << "Changed bunch, array size:" << m_chart->dataProxy()->array()->size(); + m_chart->activeDataProxy()->setItems(0, items); + qDebug() << m_loopCounter << "Changed bunch, array size:" << m_chart->activeDataProxy()->array()->size(); } } void ScatterDataModifier::removeOne() { if (m_selectedItem >= 0) { - m_chart->dataProxy()->removeItems(m_selectedItem, 1); - qDebug() << m_loopCounter << "Removed one, array size:" << m_chart->dataProxy()->array()->size(); + m_chart->activeDataProxy()->removeItems(m_selectedItem, 1); + qDebug() << m_loopCounter << "Removed one, array size:" << m_chart->activeDataProxy()->array()->size(); } } void ScatterDataModifier::removeBunch() { - m_chart->dataProxy()->removeItems(0, 100); - qDebug() << m_loopCounter << "Removed bunch, array size:" << m_chart->dataProxy()->array()->size(); + m_chart->activeDataProxy()->removeItems(0, 100); + qDebug() << m_loopCounter << "Removed bunch, array size:" << m_chart->activeDataProxy()->array()->size(); } void ScatterDataModifier::timeout() diff --git a/examples/spectrum/spectrumapp/main.cpp b/examples/spectrum/spectrumapp/main.cpp index e5994b20..32076b88 100644 --- a/examples/spectrum/spectrumapp/main.cpp +++ b/examples/spectrum/spectrumapp/main.cpp @@ -70,9 +70,6 @@ MainApp::MainApp(Q3DBars *window) // Disable grid m_chart->setGridVisible(false); // Disable auto-scaling of height by defining explicit range - // By setting count to 0 we avoid getting any grid - m_chart->setValueAxis(new QValueAxis); - m_chart->valueAxis()->setSegmentCount(0); m_chart->valueAxis()->setRange(0.0, 1.0); // Disable shadows m_chart->setShadowQuality(QDataVis::ShadowNone); @@ -103,7 +100,7 @@ MainApp::MainApp(Q3DBars *window) QObject::connect(m_restartTimer, &QTimer::timeout, this, &MainApp::restart); QBarDataProxy *proxy = new QBarDataProxy; - m_chart->setDataProxy(proxy); + m_chart->setActiveDataProxy(proxy); } MainApp::~MainApp() @@ -140,7 +137,7 @@ void MainApp::spectrumChanged(qint64 position, qint64 length, const FrequencySpe (*data)[barIndex(e.frequency)].setValue(qMax(data->at(barIndex(e.frequency)).value(), qreal(e.amplitude))); } } - static_cast<QBarDataProxy *>(m_chart->dataProxy())->insertRow(0, data); + static_cast<QBarDataProxy *>(m_chart->activeDataProxy())->insertRow(0, data); } void MainApp::stateChanged(QAudio::Mode mode, QAudio::State state) diff --git a/examples/surfacechart/chartmodifier.cpp b/examples/surfacechart/chartmodifier.cpp index 0b4fb98d..3def79c4 100644 --- a/examples/surfacechart/chartmodifier.cpp +++ b/examples/surfacechart/chartmodifier.cpp @@ -30,9 +30,6 @@ ChartModifier::ChartModifier(Q3DSurface *chart) m_xCount(10), m_zCount(10) { - m_chart->setAxisX(new QValueAxis); - m_chart->setAxisY(new QValueAxis); - m_chart->setAxisZ(new QValueAxis); } ChartModifier::~ChartModifier() diff --git a/examples/widget/chart.cpp b/examples/widget/chart.cpp index 62b35c2e..7468ec0d 100644 --- a/examples/widget/chart.cpp +++ b/examples/widget/chart.cpp @@ -48,7 +48,10 @@ ChartModifier::ChartModifier(Q3DBars *barchart) m_yearAxis(new QCategoryAxis), m_monthAxis(new QCategoryAxis), m_genericRowAxis(new QCategoryAxis), - m_genericColumnAxis(new QCategoryAxis) + m_genericColumnAxis(new QCategoryAxis), + m_temperatureData(new QBarDataProxy), + m_genericData(new QBarDataProxy), + m_currentAxis(m_fixedRangeAxis) { // Don't set any styles or specifications, start from defaults // Generate generic labels @@ -110,6 +113,16 @@ ChartModifier::ChartModifier(Q3DBars *barchart) m_chart->addAxis(m_monthAxis); m_chart->addAxis(m_genericRowAxis); m_chart->addAxis(m_genericColumnAxis); + + m_temperatureData->setItemLabelFormat(QStringLiteral("@valueTitle for @colLabel @rowLabel: @valueLabel")); + m_genericData->setItemLabelFormat(QStringLiteral("@valueTitle for (@rowIdx, @colIdx): @valueLabel")); + + m_chart->addDataProxy(m_temperatureData); + m_chart->addDataProxy(m_genericData); + + m_chart->setFont(QFont("Times Roman", 20)); + + resetTemperatureData(); } ChartModifier::~ChartModifier() @@ -119,8 +132,6 @@ ChartModifier::~ChartModifier() void ChartModifier::start() { - m_chart->setFont(QFont("Times Roman", 20)); - restart(false); } @@ -129,7 +140,7 @@ void ChartModifier::restart(bool dynamicData) m_static = !dynamicData; if (m_static) { - resetData(); + m_chart->setActiveDataProxy(m_temperatureData); m_chart->setTitle(QStringLiteral("Average temperatures in Oulu, Finland (2006-2012)")); @@ -139,22 +150,17 @@ void ChartModifier::restart(bool dynamicData) m_chart->setDataWindow(m_years.size(), m_months.size()); m_chart->setSelectionMode(QDataVis::ModeItem); - m_chart->dataProxy()->setItemLabelFormat(QStringLiteral("@valueTitle for @colLabel @rowLabel: @valueLabel")); - } else { - - m_chart->dataProxy()->resetArray(0); + m_chart->setActiveDataProxy(m_genericData); m_chart->setTitle(QStringLiteral("Generic data")); - m_chart->setValueAxis(m_fixedRangeAxis); + m_chart->setValueAxis(m_currentAxis); m_chart->setRowAxis(m_genericRowAxis); m_chart->setColumnAxis(m_genericColumnAxis); m_chart->setDataWindow(m_rowCount, m_columnCount); m_chart->setSelectionMode(QDataVis::ModeItem); - m_chart->dataProxy()->setItemLabelFormat(QStringLiteral("@valueTitle for (@rowIdx, @colIdx): @valueLabel")); - } } @@ -174,15 +180,17 @@ void ChartModifier::swapAxis() int state = ++counter % 3; if (state == 0) { - m_chart->setValueAxis(m_fixedRangeAxis); + m_currentAxis = m_fixedRangeAxis; qDebug() << "Fixed range axis"; } else if (state == 1) { - m_chart->setValueAxis(m_autoAdjustingAxis); + m_currentAxis = m_autoAdjustingAxis; qDebug() << "Automatic range axis"; } else { - m_chart->setValueAxis(0); + m_currentAxis = 0; qDebug() << "default axis"; } + + m_chart->setValueAxis(m_currentAxis); } void ChartModifier::releaseAxes() @@ -199,7 +207,15 @@ void ChartModifier::releaseAxes() m_chart->releaseAxis(m_genericColumnAxis); } -void ChartModifier::resetData() +void ChartModifier::releaseProxies() +{ + // Releases all proxies - results in default proxy. + // Proxies will get readded back when graph is switched as setDataProxy call is made. + m_chart->releaseDataProxy(m_temperatureData); + m_chart->releaseDataProxy(m_genericData); +} + +void ChartModifier::resetTemperatureData() { // Set up data @@ -213,9 +229,6 @@ void ChartModifier::resetData() {-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 }; - // Use default data proxy to feed data directly in expected format - QBarDataProxy *proxy = m_chart->dataProxy(); - // Create data rows QBarDataArray *dataSet = new QBarDataArray; QBarDataRow *dataRow; @@ -234,7 +247,7 @@ void ChartModifier::resetData() // Add data to chart (chart assumes ownership) - proxy->resetArray(dataSet); + m_temperatureData->resetArray(dataSet); } void ChartModifier::addRow() @@ -247,7 +260,7 @@ void ChartModifier::addRow() // TODO Needs to be changed to account for data window offset once it is implemented. int row = qMax(m_selectedBarPos.x(), 0); - m_chart->dataProxy()->insertRow(row, dataRow); + m_chart->activeDataProxy()->insertRow(row, dataRow); } void ChartModifier::addRows() @@ -258,13 +271,13 @@ void ChartModifier::addRows() for (int i = 0; i < m_rowCount; i++) { QBarDataRow *dataRow = new QBarDataRow(m_columnCount); for (int j = 0; j < m_columnCount; j++) - (*dataRow)[j].setValue(qreal(j + i + m_chart->dataProxy()->rowCount())); + (*dataRow)[j].setValue(qreal(j + i + m_chart->activeDataProxy()->rowCount())); dataArray.append(dataRow); } // TODO Needs to be changed to account for data window offset once it is implemented. int row = qMax(m_selectedBarPos.x(), 0); - m_chart->dataProxy()->insertRows(row, dataArray); + m_chart->activeDataProxy()->insertRows(row, dataArray); qDebug() << "Added" << m_rowCount << "rows, time:" << timer.elapsed(); } @@ -275,7 +288,7 @@ void ChartModifier::changeItem() int column = m_selectedBarPos.y(); if (row >= 0 && column >= 0) { QBarDataItem item(qreal(rand() % 100)); - m_chart->dataProxy()->setItem(row, column, item); + m_chart->activeDataProxy()->setItem(row, column, item); } } @@ -284,10 +297,10 @@ void ChartModifier::changeRow() // TODO Needs to be changed to account for data window offset once it is implemented. int row = m_selectedBarPos.x(); if (row >= 0) { - QBarDataRow *newRow = new QBarDataRow(m_chart->dataProxy()->rowAt(row)->size()); + QBarDataRow *newRow = new QBarDataRow(m_chart->activeDataProxy()->rowAt(row)->size()); for (int i = 0; i < newRow->size(); i++) (*newRow)[i].setValue(qreal(rand() % 100)); - m_chart->dataProxy()->setRow(row, newRow); + m_chart->activeDataProxy()->setRow(row, newRow); } } @@ -299,12 +312,12 @@ void ChartModifier::changeRows() int startRow = qMax(row - 2, 0); QBarDataArray newArray; for (int i = startRow; i <= row; i++ ) { - QBarDataRow *newRow = new QBarDataRow(m_chart->dataProxy()->rowAt(i)->size()); + QBarDataRow *newRow = new QBarDataRow(m_chart->activeDataProxy()->rowAt(i)->size()); for (int j = 0; j < newRow->size(); j++) (*newRow)[j].setValue(qreal(rand() % 100)); newArray.append(newRow); } - m_chart->dataProxy()->setRows(startRow, newArray); + m_chart->activeDataProxy()->setRows(startRow, newArray); } } @@ -313,7 +326,7 @@ void ChartModifier::removeRow() // TODO Needs to be changed to account for data window offset once it is implemented. int row = m_selectedBarPos.x(); if (row >= 0) - m_chart->dataProxy()->removeRows(row, 1); + m_chart->activeDataProxy()->removeRows(row, 1); } void ChartModifier::removeRows() @@ -322,7 +335,7 @@ void ChartModifier::removeRows() int row = m_selectedBarPos.x(); if (row >= 0) { int startRow = qMax(row - 2, 0); - m_chart->dataProxy()->removeRows(startRow, 3); + m_chart->activeDataProxy()->removeRows(startRow, 3); } } diff --git a/examples/widget/chart.h b/examples/widget/chart.h index a4b6d78d..3319df06 100644 --- a/examples/widget/chart.h +++ b/examples/widget/chart.h @@ -35,7 +35,7 @@ public: explicit ChartModifier(Q3DBars *barchart); ~ChartModifier(); - void resetData(); + void resetTemperatureData(); void addRow(); void addRows(); void changeItem(); @@ -65,6 +65,7 @@ public: void selectBar(); void swapAxis(); void releaseAxes(); + void releaseProxies(); public slots: void changeShadowQuality(int quality); @@ -99,6 +100,9 @@ private: QCategoryAxis *m_monthAxis; QCategoryAxis *m_genericRowAxis; QCategoryAxis *m_genericColumnAxis; + QBarDataProxy *m_temperatureData; + QBarDataProxy *m_genericData; + QValueAxis *m_currentAxis; }; #endif diff --git a/examples/widget/main.cpp b/examples/widget/main.cpp index 628fc453..a774c0e8 100644 --- a/examples/widget/main.cpp +++ b/examples/widget/main.cpp @@ -106,6 +106,10 @@ int main(int argc, char **argv) releaseAxesButton->setText(QStringLiteral("Release all axes")); releaseAxesButton->setEnabled(true); + QPushButton *releaseProxiesButton = new QPushButton(widget); + releaseProxiesButton->setText(QStringLiteral("Release all proxies")); + releaseProxiesButton->setEnabled(true); + QCheckBox *backgroundCheckBox = new QCheckBox(widget); backgroundCheckBox->setText(QStringLiteral("Show background")); backgroundCheckBox->setChecked(true); @@ -206,6 +210,7 @@ int main(int argc, char **argv) vLayout->addWidget(setSelectedBarButton, 0, Qt::AlignTop); vLayout->addWidget(swapAxisButton, 0, Qt::AlignTop); vLayout->addWidget(releaseAxesButton, 0, Qt::AlignTop); + vLayout->addWidget(releaseProxiesButton, 0, Qt::AlignTop); vLayout->addWidget(backgroundCheckBox); vLayout->addWidget(gridCheckBox); vLayout->addWidget(new QLabel(QStringLiteral("Adjust shadow quality"))); @@ -268,6 +273,8 @@ int main(int argc, char **argv) &ChartModifier::swapAxis); QObject::connect(releaseAxesButton, &QPushButton::clicked, modifier, &ChartModifier::releaseAxes); + QObject::connect(releaseProxiesButton, &QPushButton::clicked, modifier, + &ChartModifier::releaseProxies); QObject::connect(fontList, &QFontComboBox::currentFontChanged, modifier, &ChartModifier::changeFont); |