diff --git a/viewer/charts/JFJochDatasetInfoChartView.cpp b/viewer/charts/JFJochDatasetInfoChartView.cpp index 7043ea79..c1f33399 100644 --- a/viewer/charts/JFJochDatasetInfoChartView.cpp +++ b/viewer/charts/JFJochDatasetInfoChartView.cpp @@ -22,7 +22,7 @@ JFJochDatasetInfoChartView::JFJochDatasetInfoChartView(QWidget *parent) void JFJochDatasetInfoChartView::setImage(int64_t val) { - if (!currentSeries) + if (!currentSeries || currentSeries->chart() != chart()) return; curr_image = val; @@ -129,7 +129,12 @@ void JFJochDatasetInfoChartView::resetZoom() { } void JFJochDatasetInfoChartView::updateChart() { + // Important: drop any stale QObject pointers BEFORE rebuilding the chart. + series = nullptr; + currentSeries = nullptr; + chart()->removeAllSeries(); + if (m_hoverLine) { chart()->scene()->removeItem(m_hoverLine); delete m_hoverLine; diff --git a/viewer/charts/JFJochDatasetInfoChartView.h b/viewer/charts/JFJochDatasetInfoChartView.h index 3ac3267d..4537b80f 100644 --- a/viewer/charts/JFJochDatasetInfoChartView.h +++ b/viewer/charts/JFJochDatasetInfoChartView.h @@ -11,6 +11,7 @@ #include #include #include +#include #ifdef JFJOCH_USE_FFTW #include @@ -22,8 +23,8 @@ class JFJochDatasetInfoChartView : public QChartView { Q_OBJECT - QLineSeries *series = nullptr; - QScatterSeries *currentSeries = nullptr; + QPointer series = nullptr; + QPointer currentSeries = nullptr; QGraphicsLineItem *m_hoverLine = nullptr; QTimer *m_hoverLoadTimer = nullptr; int64_t m_hoverPendingIdx = -1;