From 8492fb1ed7476a8a3b9adcbbf8a4a32df4410cb8 2017-06-23 14:26:15 From: Alexandre Leroux Date: 2017-06-23 14:26:15 Subject: [PATCH] QCustomPlot notify the graph widget when the xRange changed --- diff --git a/gui/include/Visualization/VisualizationGraphWidget.h b/gui/include/Visualization/VisualizationGraphWidget.h index 33998b0..710eba6 100644 --- a/gui/include/Visualization/VisualizationGraphWidget.h +++ b/gui/include/Visualization/VisualizationGraphWidget.h @@ -12,6 +12,7 @@ Q_DECLARE_LOGGING_CATEGORY(LOG_VisualizationGraphWidget) +class QCPRange; class Variable; namespace Ui { @@ -40,6 +41,9 @@ private: spimpl::unique_impl_ptr impl; private slots: + + void onRangeChanged(const QCPRange &t1, const QCPRange &t2); + /// Slot called when a mouse wheel was made, to perform some processing before the zoom is done void onMouseWheel(QWheelEvent *event) noexcept; }; diff --git a/gui/src/Visualization/VisualizationGraphWidget.cpp b/gui/src/Visualization/VisualizationGraphWidget.cpp index ee02cb7..897dc7c 100644 --- a/gui/src/Visualization/VisualizationGraphWidget.cpp +++ b/gui/src/Visualization/VisualizationGraphWidget.cpp @@ -4,7 +4,6 @@ #include "ui_VisualizationGraphWidget.h" #include - #include Q_LOGGING_CATEGORY(LOG_VisualizationGraphWidget, "VisualizationGraphWidget") @@ -42,8 +41,12 @@ VisualizationGraphWidget::VisualizationGraphWidget(const QString &name, QWidget ui->widget->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom); ui->widget->axisRect()->setRangeDrag(Qt::Horizontal); connect(ui->widget, &QCustomPlot::mouseWheel, this, &VisualizationGraphWidget::onMouseWheel); + connect(ui->widget->xAxis, static_cast( + &QCPAxis::rangeChanged), + this, &VisualizationGraphWidget::onRangeChanged); } + VisualizationGraphWidget::~VisualizationGraphWidget() { delete ui; @@ -93,6 +96,14 @@ QString VisualizationGraphWidget::name() const } } +void VisualizationGraphWidget::onRangeChanged(const QCPRange &t1, const QCPRange &t2) +{ + for (auto it = impl->m_VariableToPlotMap.cbegin(); it != impl->m_VariableToPlotMap.cend(); + ++it) { + it->first->onXRangeChanged(SqpDateTime{t2.lower, t2.upper}); + } +} + void VisualizationGraphWidget::onMouseWheel(QWheelEvent *event) noexcept { auto zoomOrientations = QFlags{};