diff options
Diffstat (limited to 'examples')
-rw-r--r-- | examples/barchart/main.cpp | 3 | ||||
-rw-r--r-- | examples/qmlbarchart/qml/qmlbarchart/main.qml | 26 | ||||
-rw-r--r-- | examples/rainfall/rainfallchart.cpp | 3 | ||||
-rw-r--r-- | examples/scatterchart/scatterchart.cpp | 15 | ||||
-rw-r--r-- | examples/spectrum/spectrumapp/main.cpp | 1 | ||||
-rw-r--r-- | examples/surfacechart/chartmodifier.cpp | 14 | ||||
-rw-r--r-- | examples/widget/chart.cpp | 182 | ||||
-rw-r--r-- | examples/widget/chart.h | 15 | ||||
-rw-r--r-- | examples/widget/main.cpp | 9 |
9 files changed, 175 insertions, 93 deletions
diff --git a/examples/barchart/main.cpp b/examples/barchart/main.cpp index 673ed05e..c51aa12f 100644 --- a/examples/barchart/main.cpp +++ b/examples/barchart/main.cpp @@ -70,6 +70,9 @@ 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)); diff --git a/examples/qmlbarchart/qml/qmlbarchart/main.qml b/examples/qmlbarchart/qml/qmlbarchart/main.qml index 887cb3d7..01eafcad 100644 --- a/examples/qmlbarchart/qml/qmlbarchart/main.qml +++ b/examples/qmlbarchart/qml/qmlbarchart/main.qml @@ -101,12 +101,20 @@ Item { "July", "August", "September", "October", "November", "December"] } ValueAxis { - id: valueAxis + id: incomeAxis min: 0 max: 35 - labelFormat: "%.1f M\u20AC" - title: "Annual expenses" + labelFormat: "%.2f M\u20AC" + title: "Monthly income" } + ValueAxis { + id: expensesAxis + min: 0 + max: 35 + labelFormat: "-%.2f M\u20AC" + title: "Monthly expenses" + } + Bars3D { id: testchart width: dataView.width @@ -122,14 +130,14 @@ Item { barSpacing: Qt.size(0.5, 0.5) barSpacingRelative: false barType: Bars3D.BevelBars - axisX: rowAxis - axisY: valueAxis - axisZ: columnAxis + rowAxis: rowAxis + columnAxis: columnAxis + valueAxis: expensesAxis itemLabelFormat: "@valueTitle for @colLabel, @rowLabel: @valueLabel" onDataResolved: { // Can't select a bar until data has been resolved from model to proxy - selectedBarPos = Qt.point(0, 5) + //selectedBarPos = Qt.point(0, 5) } } @@ -204,11 +212,11 @@ Item { if (valueMapping.valueRole == "expenses") { valueMapping.valueRole = "income" mappingButtonText.text = "Show Expenses" - valueAxis.title = "Annual income" + testchart.valueAxis = incomeAxis } else { valueMapping.valueRole = "expenses" mappingButtonText.text = "Show Income" - valueAxis.title = "Annual expenses" + testchart.valueAxis = expensesAxis } } } diff --git a/examples/rainfall/rainfallchart.cpp b/examples/rainfall/rainfallchart.cpp index ce670546..5b0d5dd9 100644 --- a/examples/rainfall/rainfallchart.cpp +++ b/examples/rainfall/rainfallchart.cpp @@ -51,6 +51,9 @@ 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 7af80b85..3379de50 100644 --- a/examples/scatterchart/scatterchart.cpp +++ b/examples/scatterchart/scatterchart.cpp @@ -38,6 +38,9 @@ ScatterDataModifier::ScatterDataModifier(Q3DScatter *scatter) m_chart->setTheme(QDataVis::ThemeBrownSand); m_chart->setShadowQuality(QDataVis::ShadowHigh); m_chart->setCameraPreset(QDataVis::PresetFront); + m_chart->setAxisX(new QValueAxis); + m_chart->setAxisY(new QValueAxis); + m_chart->setAxisZ(new QValueAxis); QScatterDataProxy *proxy = new QScatterDataProxy; proxy->setItemLabelFormat("@xTitle: @xLabel @yTitle: @yLabel @zTitle: @zLabel"); @@ -59,12 +62,12 @@ void ScatterDataModifier::start() void ScatterDataModifier::addData() { // Add labels - m_chart->valueAxisX()->setTitle("X"); - m_chart->valueAxisY()->setTitle("Y"); - m_chart->valueAxisZ()->setTitle("Z"); - m_chart->valueAxisX()->setRange(-50.0, 50.0); - m_chart->valueAxisY()->setRange(-1.0, 1.0); - m_chart->valueAxisZ()->setRange(-50.0, 50.0); + m_chart->axisX()->setTitle("X"); + m_chart->axisY()->setTitle("Y"); + m_chart->axisZ()->setTitle("Z"); + m_chart->axisX()->setRange(-50.0, 50.0); + m_chart->axisY()->setRange(-1.0, 1.0); + m_chart->axisZ()->setRange(-50.0, 50.0); QScatterDataArray *dataArray = new QScatterDataArray; dataArray->resize(numberOfItems); diff --git a/examples/spectrum/spectrumapp/main.cpp b/examples/spectrum/spectrumapp/main.cpp index 0b17d064..e5994b20 100644 --- a/examples/spectrum/spectrumapp/main.cpp +++ b/examples/spectrum/spectrumapp/main.cpp @@ -71,6 +71,7 @@ MainApp::MainApp(Q3DBars *window) 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 diff --git a/examples/surfacechart/chartmodifier.cpp b/examples/surfacechart/chartmodifier.cpp index 03f55dc9..0b4fb98d 100644 --- a/examples/surfacechart/chartmodifier.cpp +++ b/examples/surfacechart/chartmodifier.cpp @@ -17,7 +17,6 @@ ****************************************************************************/ #include "chartmodifier.h" -#include <QCategoryAxis> #include <QValueAxis> #include <qmath.h> @@ -31,6 +30,9 @@ 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() @@ -75,7 +77,7 @@ void ChartModifier::toggleSqrtSin(bool enable) m_chart->setSegmentCount(4, 0.5f); // Going to be obsolete m_chart->appendSeries(series, m_xCount, m_zCount); - m_chart->valueAxisZ()->setSegmentCount(7); + m_chart->axisZ()->setSegmentCount(7); qDebug() << "biggest = " << biggest << ", smallest = " << smallest; } else { @@ -98,10 +100,10 @@ void ChartModifier::togglePlane(bool enable) m_chart->setSegmentCount(4, 0.5f); m_chart->appendSeries(series, m_xCount, m_zCount); - m_chart->valueAxisX()->setSegmentCount(m_xCount - 1); - m_chart->valueAxisY()->setSegmentCount(4); - m_chart->valueAxisY()->setRange(0.0, 2.0); - m_chart->valueAxisZ()->setSegmentCount(m_zCount - 1); + m_chart->axisX()->setSegmentCount(m_xCount - 1); + m_chart->axisY()->setSegmentCount(4); + m_chart->axisY()->setRange(0.0, 2.0); + m_chart->axisZ()->setSegmentCount(m_zCount - 1); } } diff --git a/examples/widget/chart.cpp b/examples/widget/chart.cpp index 32985ada..957ec8e9 100644 --- a/examples/widget/chart.cpp +++ b/examples/widget/chart.cpp @@ -41,22 +41,75 @@ ChartModifier::ChartModifier(Q3DBars *barchart) m_subSegments(3), m_minval(-20.0), // TODO Barchart Y-axis currently only properly supports zero-centered ranges m_maxval(20.0), - m_selectedBarPos(-1, -1) + m_selectedBarPos(-1, -1), + m_autoAdjustingAxis(new QValueAxis), + m_fixedRangeAxis(new QValueAxis), + m_temperatureAxis(new QValueAxis), + m_yearAxis(new QCategoryAxis), + m_monthAxis(new QCategoryAxis), + m_genericRowAxis(new QCategoryAxis), + m_genericColumnAxis(new QCategoryAxis) { // Don't set any styles or specifications, start from defaults // Generate generic labels + QStringList genericRowLabels; + QStringList genericColumnLabels; for (int i = 0; i < 200; i++) { if (i % 5) - m_genericRowLabels << QString(); + genericRowLabels << QString(); else - m_genericRowLabels << QStringLiteral("Row %1").arg(i); + genericRowLabels << QStringLiteral("Row %1").arg(i); } for (int i = 0; i < 200; i++) { if (i % 5) - m_genericColumnLabels << QString(); + genericColumnLabels << QString(); else - m_genericColumnLabels << QStringLiteral("Column %1").arg(i); + genericColumnLabels << QStringLiteral("Column %1").arg(i); } + + m_months << "January" << "February" << "March" << "April" << "May" << "June" << "July" << "August" << "September" << "October" << "November" << "December"; + m_years << "2006" << "2007" << "2008" << "2009" << "2010" << "2011" << "2012"; + + QString labelFormat(QStringLiteral("%.3f")); + QString axisTitle("Generic Value"); + + m_autoAdjustingAxis->setLabelFormat(labelFormat); + m_autoAdjustingAxis->setTitle(axisTitle); + m_autoAdjustingAxis->setSegmentCount(m_segments * 2); + m_autoAdjustingAxis->setSubSegmentCount(1); + m_autoAdjustingAxis->setAutoAdjustRange(true); + + m_fixedRangeAxis->setLabelFormat(labelFormat); + m_fixedRangeAxis->setTitle(axisTitle); + m_fixedRangeAxis->setSegmentCount(m_segments); + m_fixedRangeAxis->setSubSegmentCount(m_subSegments); + m_fixedRangeAxis->setRange(0.0, 100.0); + + m_genericRowAxis->setTitle("Generic Row"); + m_genericRowAxis->setCategoryLabels(genericRowLabels); + + m_genericColumnAxis->setTitle("Generic Column"); + m_genericColumnAxis->setCategoryLabels(genericColumnLabels); + + m_temperatureAxis->setTitle("Average temperature"); + m_temperatureAxis->setSegmentCount(m_segments); + m_temperatureAxis->setSubSegmentCount(m_subSegments); + m_temperatureAxis->setRange(m_minval, m_maxval); + m_temperatureAxis->setLabelFormat(QString(QStringLiteral("%d ") + celsiusString)); + + m_yearAxis->setTitle("Year"); + m_yearAxis->setCategoryLabels(m_years); + + m_monthAxis->setTitle("Month"); + m_monthAxis->setCategoryLabels(m_months); + + m_chart->addAxis(m_autoAdjustingAxis); + m_chart->addAxis(m_fixedRangeAxis); + m_chart->addAxis(m_temperatureAxis); + m_chart->addAxis(m_yearAxis); + m_chart->addAxis(m_monthAxis); + m_chart->addAxis(m_genericRowAxis); + m_chart->addAxis(m_genericColumnAxis); } ChartModifier::~ChartModifier() @@ -66,8 +119,9 @@ ChartModifier::~ChartModifier() void ChartModifier::start() { - if (m_static) - addDataSet(); + m_chart->setFont(QFont("Times Roman", 20)); + + restart(false); } void ChartModifier::restart(bool dynamicData) @@ -75,31 +129,32 @@ void ChartModifier::restart(bool dynamicData) m_static = !dynamicData; if (m_static) { - start(); - // Set selection mode to zoom row - m_chart->setSelectionMode(QDataVis::ModeSliceRow); - m_chart->setFont(QFont("Times Roman", 20)); + resetData(); + + m_chart->setTitle(QStringLiteral("Average temperatures in Oulu, Finland (2006-2012)")); + + m_chart->setValueAxis(m_temperatureAxis); + m_chart->setRowAxis(m_yearAxis); + m_chart->setColumnAxis(m_monthAxis); + + 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->dataProxy()->setItemLabelFormat(QStringLiteral("@valueTitle for (@rowIdx, @colIdx): @valueLabel")); - // Set up sample space + + m_chart->setTitle(QStringLiteral("Generic data")); + + m_chart->setValueAxis(m_fixedRangeAxis); + m_chart->setRowAxis(m_genericRowAxis); + m_chart->setColumnAxis(m_genericColumnAxis); + m_chart->setDataWindow(m_rowCount, m_columnCount); - // Set selection mode to full - m_chart->setSelectionMode(QDataVis::ModeSliceRow); - m_chart->valueAxis()->setSegmentCount(m_segments * 2); - m_chart->valueAxis()->setSubSegmentCount(1); - m_chart->valueAxis()->setAutoAdjustRange(true); - m_chart->valueAxis()->setLabelFormat(QString(QStringLiteral("%.3f"))); - - m_chart->rowAxis()->setTitle("Generic Row"); - m_chart->columnAxis()->setTitle("Generic Column"); - m_chart->valueAxis()->setTitle("Generic Value"); - - if (m_chart->rowAxis()->labels().size() < m_rowCount) - m_chart->rowAxis()->setCategoryLabels(m_genericRowLabels.mid(0, m_rowCount)); - - if (m_chart->columnAxis()->labels().size() < m_rowCount) - m_chart->columnAxis()->setCategoryLabels(m_genericColumnLabels.mid(0, m_columnCount)); + m_chart->setSelectionMode(QDataVis::ModeItem); + m_chart->dataProxy()->setItemLabelFormat(QStringLiteral("@valueTitle for (@rowIdx, @colIdx): @valueLabel")); + } } @@ -113,53 +168,49 @@ void ChartModifier::selectBar() m_chart->setSelectedBarPos(noSelection); } -void ChartModifier::addDataSet() +void ChartModifier::swapAxis() { - // Prepare data to be visualized - // Use QDataSet adder + static int counter = 0; + int state = ++counter % 3; - // Set window title - m_chart->setTitle(QStringLiteral("Average temperatures in Oulu, Finland (2006-2012)")); + if (state == 0) { + m_chart->setValueAxis(m_fixedRangeAxis); + qDebug() << "Fixed range axis"; + } else if (state == 1) { + m_chart->setValueAxis(m_autoAdjustingAxis); + qDebug() << "Automatic range axis"; + } else { + m_chart->setValueAxis(0); + qDebug() << "default axis"; + } +} - // Set up row and column names - QStringList months; - months << "January" << "February" << "March" << "April" << "May" << "June" << "July" << "August" << "September" << "October" << "November" << "December"; - QStringList years; - years << "2006" << "2007" << "2008" << "2009" << "2010" << "2011" << "2012"; +void ChartModifier::resetData() +{ // Set up data - float temp[7][12] = {{-6.7f, -11.7f, -9.7f, 3.3f, 9.2f, 14.0f, 16.3f, 17.8f, 10.2f, 2.1f, -2.6f, -0.3f}, // 2006 - {-6.8f, -13.3f, 0.2f, 1.5f, 7.9f, 13.4f, 16.1f, 15.5f, 8.2f, 5.4f, -2.6f, -0.8f}, // 2007 - {-4.2f, -4.0f, -4.6f, 1.9f, 7.3f, 12.5f, 15.0f, 12.8f, 7.6f, 5.1f, -0.9f, -1.3f}, // 2008 - {-7.8f, -8.8f, -4.2f, 0.7f, 9.3f, 13.2f, 15.8f, 15.5f, 11.2f, 0.6f, 0.7f, -8.4f}, // 2009 - {-14.4f, -12.1f, -7.0f, 2.3f, 11.0f, 12.6f, 18.8f, 13.8f, 9.4f, 3.9f, -5.6f, -13.0f}, // 2010 - {-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 + static const float temp[7][12] = { + {-6.7f, -11.7f, -9.7f, 3.3f, 9.2f, 14.0f, 16.3f, 17.8f, 10.2f, 2.1f, -2.6f, -0.3f}, // 2006 + {-6.8f, -13.3f, 0.2f, 1.5f, 7.9f, 13.4f, 16.1f, 15.5f, 8.2f, 5.4f, -2.6f, -0.8f}, // 2007 + {-4.2f, -4.0f, -4.6f, 1.9f, 7.3f, 12.5f, 15.0f, 12.8f, 7.6f, 5.1f, -0.9f, -1.3f}, // 2008 + {-7.8f, -8.8f, -4.2f, 0.7f, 9.3f, 13.2f, 15.8f, 15.5f, 11.2f, 0.6f, 0.7f, -8.4f}, // 2009 + {-14.4f, -12.1f, -7.0f, 2.3f, 11.0f, 12.6f, 18.8f, 13.8f, 9.4f, 3.9f, -5.6f, -13.0f}, // 2010 + {-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 + }; // Use default data proxy to feed data directly in expected format QBarDataProxy *proxy = m_chart->dataProxy(); - // Add labels - m_chart->rowAxis()->setTitle("Year"); - m_chart->columnAxis()->setTitle("Month"); - m_chart->valueAxis()->setTitle("Average temperature"); - m_chart->rowAxis()->setCategoryLabels(years); - m_chart->columnAxis()->setCategoryLabels(months); - m_chart->valueAxis()->setSegmentCount(m_segments); - m_chart->valueAxis()->setSubSegmentCount(m_subSegments); - m_chart->valueAxis()->setRange(m_minval, m_maxval); - m_chart->valueAxis()->setLabelFormat(QString(QStringLiteral("%d ") + celsiusString)); - m_chart->setSelectionMode(QDataVis::ModeSliceRow); - // Create data rows QBarDataArray *dataSet = new QBarDataArray; QBarDataRow *dataRow; - dataSet->reserve(years.size()); - for (int year = 0; year < years.size(); year++) { - dataRow = new QBarDataRow(months.size()); + dataSet->reserve(m_years.size()); + for (int year = 0; year < m_years.size(); year++) { + dataRow = new QBarDataRow(m_months.size()); // Create data items - for (int month = 0; month < months.size(); month++) { + for (int month = 0; month < m_months.size(); month++) { // Add data to rows (*dataRow)[month].setValue(temp[year][month]); } @@ -167,12 +218,9 @@ void ChartModifier::addDataSet() dataSet->append(dataRow); } - // Set up sample space based on prepared data - m_chart->setDataWindow(years.size(), months.size()); // Add data to chart (chart assumes ownership) proxy->resetArray(dataSet); - proxy->setItemLabelFormat(QStringLiteral("@valueTitle for @colLabel @rowLabel: @valueLabel")); } void ChartModifier::addRow() @@ -446,14 +494,10 @@ void ChartModifier::setSampleCountX(int samples) { m_columnCount = samples; m_chart->setDataWindow(m_rowCount, m_columnCount); - if (m_chart->columnAxis()->labels().size() < m_columnCount) - m_chart->columnAxis()->setCategoryLabels(m_genericColumnLabels.mid(0, m_columnCount)); } void ChartModifier::setSampleCountZ(int samples) { m_rowCount = samples; m_chart->setDataWindow(m_rowCount, m_columnCount); - if (m_chart->rowAxis()->labels().size() < m_rowCount) - m_chart->rowAxis()->setCategoryLabels(m_genericRowLabels.mid(0, m_rowCount)); } diff --git a/examples/widget/chart.h b/examples/widget/chart.h index c8b14246..36766336 100644 --- a/examples/widget/chart.h +++ b/examples/widget/chart.h @@ -24,6 +24,7 @@ #include <QFont> #include <QDebug> #include <QStringList> +#include <QPointer> using namespace QtDataVis3D; @@ -34,7 +35,7 @@ public: explicit ChartModifier(Q3DBars *barchart); ~ChartModifier(); - void addDataSet(); + void resetData(); void addRow(); void addRows(); void changeItem(); @@ -62,6 +63,7 @@ public: void start(); void restart(bool dynamicData); void selectBar(); + void swapAxis(); public slots: void changeShadowQuality(int quality); @@ -86,9 +88,16 @@ private: int m_subSegments; qreal m_minval; qreal m_maxval; - QStringList m_genericRowLabels; - QStringList m_genericColumnLabels; + QStringList m_months; + QStringList m_years; QPoint m_selectedBarPos; + QValueAxis *m_autoAdjustingAxis; + QValueAxis *m_fixedRangeAxis; + QValueAxis *m_temperatureAxis; + QCategoryAxis *m_yearAxis; + QCategoryAxis *m_monthAxis; + QCategoryAxis *m_genericRowAxis; + QCategoryAxis *m_genericColumnAxis; }; #endif diff --git a/examples/widget/main.cpp b/examples/widget/main.cpp index 3c0e44cf..84e1565e 100644 --- a/examples/widget/main.cpp +++ b/examples/widget/main.cpp @@ -98,6 +98,10 @@ int main(int argc, char **argv) QPushButton *setSelectedBarButton = new QPushButton(widget); setSelectedBarButton->setText(QStringLiteral("Select/deselect bar at (5,5)")); + QPushButton *swapAxisButton = new QPushButton(widget); + swapAxisButton->setText(QStringLiteral("Swap value axis")); + swapAxisButton->setEnabled(false); + QCheckBox *backgroundCheckBox = new QCheckBox(widget); backgroundCheckBox->setText(QStringLiteral("Show background")); backgroundCheckBox->setChecked(true); @@ -196,6 +200,7 @@ int main(int argc, char **argv) vLayout->addWidget(cameraButton, 0, Qt::AlignTop); vLayout->addWidget(selectionButton, 0, Qt::AlignTop); vLayout->addWidget(setSelectedBarButton, 0, Qt::AlignTop); + vLayout->addWidget(swapAxisButton, 0, Qt::AlignTop); vLayout->addWidget(backgroundCheckBox); vLayout->addWidget(gridCheckBox); vLayout->addWidget(new QLabel(QStringLiteral("Adjust shadow quality"))); @@ -254,6 +259,8 @@ int main(int argc, char **argv) &ChartModifier::changeSelectionMode); QObject::connect(setSelectedBarButton, &QPushButton::clicked, modifier, &ChartModifier::selectBar); + QObject::connect(swapAxisButton, &QPushButton::clicked, modifier, + &ChartModifier::swapAxis); QObject::connect(fontList, &QFontComboBox::currentFontChanged, modifier, &ChartModifier::changeFont); @@ -290,6 +297,8 @@ int main(int argc, char **argv) &QSlider::setEnabled); QObject::connect(staticCheckBox, &QCheckBox::stateChanged, sampleSliderZ, &QSlider::setEnabled); + QObject::connect(staticCheckBox, &QCheckBox::stateChanged, swapAxisButton, + &QSlider::setEnabled); QObject::connect(staticCheckBox, &QCheckBox::stateChanged, modifier, &ChartModifier::restart); modifier->start(); |