diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2023-03-01 21:29:14 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-03-02 08:44:43 +0000 |
commit | 3661b135306f00e3e4dede8181e0015bcc60d5be (patch) | |
tree | 1bd78cc89a6b9f565c1b7aefe58878a7556abc23 | |
parent | 29b99b3efc324290a12ee02c748f9c1240f9733c (diff) |
graphgallery example: Fix leaking modifier classes
The modifier classes were leaking. Pass a parent to ensure their
destruction. Remove the deletion of the graphs from their
destructors since they are QWindows, which are deleted by QtGui.
Task-number: QTBUG-110698
Change-Id: Ied32dad62c93b730f63fa95994c4fc281254c800
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
(cherry picked from commit f289b0b14d174d7c891a225c4e81f67573d8c555)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
9 files changed, 14 insertions, 24 deletions
diff --git a/examples/datavisualization/graphgallery/bargraph.cpp b/examples/datavisualization/graphgallery/bargraph.cpp index ef5112f2..5bb04c01 100644 --- a/examples/datavisualization/graphgallery/bargraph.cpp +++ b/examples/datavisualization/graphgallery/bargraph.cpp @@ -245,7 +245,7 @@ bool BarGraph::initialize() vLayout->addWidget(modeCustomProxy, 1, Qt::AlignTop); //! [2] - GraphModifier *modifier = new GraphModifier(m_barsGraph); + GraphModifier *modifier = new GraphModifier(m_barsGraph, this); //! [2] //! [5] diff --git a/examples/datavisualization/graphgallery/graphmodifier.cpp b/examples/datavisualization/graphgallery/graphmodifier.cpp index 99bd24c9..1c488393 100644 --- a/examples/datavisualization/graphgallery/graphmodifier.cpp +++ b/examples/datavisualization/graphgallery/graphmodifier.cpp @@ -19,7 +19,8 @@ using namespace Qt::StringLiterals; // TODO: Many of the values do not affect custom proxy series now - should be fixed //! [0] -GraphModifier::GraphModifier(Q3DBars *bargraph) : +GraphModifier::GraphModifier(Q3DBars *bargraph, QObject *parent) : + QObject(parent), m_graph(bargraph), //! [0] //! [1] @@ -127,7 +128,6 @@ GraphModifier::GraphModifier(Q3DBars *bargraph) : GraphModifier::~GraphModifier() { delete m_customData; - delete m_graph; } void GraphModifier::resetTemperatureData() diff --git a/examples/datavisualization/graphgallery/graphmodifier.h b/examples/datavisualization/graphgallery/graphmodifier.h index deba00c5..7b91c049 100644 --- a/examples/datavisualization/graphgallery/graphmodifier.h +++ b/examples/datavisualization/graphgallery/graphmodifier.h @@ -15,7 +15,7 @@ class GraphModifier : public QObject { Q_OBJECT public: - explicit GraphModifier(Q3DBars *bargraph); + explicit GraphModifier(Q3DBars *bargraph, QObject *parent); ~GraphModifier(); void resetTemperatureData(); diff --git a/examples/datavisualization/graphgallery/scatterdatamodifier.cpp b/examples/datavisualization/graphgallery/scatterdatamodifier.cpp index 93c844c9..f018c81b 100644 --- a/examples/datavisualization/graphgallery/scatterdatamodifier.cpp +++ b/examples/datavisualization/graphgallery/scatterdatamodifier.cpp @@ -21,8 +21,9 @@ const float curveDivider = 7.5f; const int lowerNumberOfItems = 900; const float lowerCurveDivider = 0.75f; -ScatterDataModifier::ScatterDataModifier(Q3DScatter *scatter) - : m_graph(scatter), +ScatterDataModifier::ScatterDataModifier(Q3DScatter *scatter, QObject *parent) : + QObject(parent), + m_graph(scatter), m_itemCount(lowerNumberOfItems), m_curveDivider(lowerCurveDivider), //! [7] @@ -59,11 +60,6 @@ ScatterDataModifier::ScatterDataModifier(Q3DScatter *scatter) //! [2] } -ScatterDataModifier::~ScatterDataModifier() -{ - delete m_graph; -} - void ScatterDataModifier::addData() { // Configure the axes according to the data diff --git a/examples/datavisualization/graphgallery/scatterdatamodifier.h b/examples/datavisualization/graphgallery/scatterdatamodifier.h index 5b6a1c9f..2238b9e7 100644 --- a/examples/datavisualization/graphgallery/scatterdatamodifier.h +++ b/examples/datavisualization/graphgallery/scatterdatamodifier.h @@ -13,8 +13,7 @@ class ScatterDataModifier : public QObject { Q_OBJECT public: - explicit ScatterDataModifier(Q3DScatter *scatter); - ~ScatterDataModifier(); + explicit ScatterDataModifier(Q3DScatter *scatter, QObject *parent); void addData(); diff --git a/examples/datavisualization/graphgallery/scattergraph.cpp b/examples/datavisualization/graphgallery/scattergraph.cpp index ae20d609..043d43ac 100644 --- a/examples/datavisualization/graphgallery/scattergraph.cpp +++ b/examples/datavisualization/graphgallery/scattergraph.cpp @@ -110,7 +110,7 @@ bool ScatterGraph::initialize() vLayout->addWidget(new QLabel(u"Adjust shadow quality"_s)); vLayout->addWidget(shadowQuality, 1, Qt::AlignTop); - ScatterDataModifier *modifier = new ScatterDataModifier(m_scatterGraph); + ScatterDataModifier *modifier = new ScatterDataModifier(m_scatterGraph, this); QObject::connect(cameraButton, &QCommandLinkButton::clicked, modifier, &ScatterDataModifier::changePresetCamera); diff --git a/examples/datavisualization/graphgallery/surfacegraph.cpp b/examples/datavisualization/graphgallery/surfacegraph.cpp index 86ff4145..5de2b7cd 100644 --- a/examples/datavisualization/graphgallery/surfacegraph.cpp +++ b/examples/datavisualization/graphgallery/surfacegraph.cpp @@ -253,7 +253,7 @@ bool SurfaceGraph::initialize() vLayout->addWidget(enableTexture); // Create the controller - SurfaceGraphModifier *modifier = new SurfaceGraphModifier(m_surfaceGraph, labelSelectedItem); + SurfaceGraphModifier *modifier = new SurfaceGraphModifier(m_surfaceGraph, labelSelectedItem, this); // Connect widget controls to controller QObject::connect(heightMapModelRB, &QRadioButton::toggled, diff --git a/examples/datavisualization/graphgallery/surfacegraphmodifier.cpp b/examples/datavisualization/graphgallery/surfacegraphmodifier.cpp index 005c27fc..3ab9f7eb 100644 --- a/examples/datavisualization/graphgallery/surfacegraphmodifier.cpp +++ b/examples/datavisualization/graphgallery/surfacegraphmodifier.cpp @@ -25,8 +25,9 @@ const float areaHeight = 8000.f; const float aspectRatio = 0.1389f; const float minRange = areaWidth * 0.49f; -SurfaceGraphModifier::SurfaceGraphModifier(Q3DSurface *surface, QLabel *label) - : m_graph(surface), +SurfaceGraphModifier::SurfaceGraphModifier(Q3DSurface *surface, QLabel *label, QObject *parent) : + QObject(parent), + m_graph(surface), m_textField(label) { m_graph->scene()->activeCamera()->setZoomLevel(85.f); @@ -145,11 +146,6 @@ SurfaceGraphModifier::SurfaceGraphModifier(Q3DSurface *surface, QLabel *label) m_customInputHandler->setAspectRatio(aspectRatio); } -SurfaceGraphModifier::~SurfaceGraphModifier() -{ - delete m_graph; -} - void SurfaceGraphModifier::fillSqrtSinProxy() { float stepX = (sampleMax - sampleMin) / float(sampleCountX - 1); diff --git a/examples/datavisualization/graphgallery/surfacegraphmodifier.h b/examples/datavisualization/graphgallery/surfacegraphmodifier.h index 19ae04b2..0c01d986 100644 --- a/examples/datavisualization/graphgallery/surfacegraphmodifier.h +++ b/examples/datavisualization/graphgallery/surfacegraphmodifier.h @@ -23,8 +23,7 @@ class SurfaceGraphModifier : public QObject { Q_OBJECT public: - explicit SurfaceGraphModifier(Q3DSurface *surface, QLabel *label); - ~SurfaceGraphModifier(); + explicit SurfaceGraphModifier(Q3DSurface *surface, QLabel *label, QObject *parent); //! [0] void toggleModeNone() { m_graph->setSelectionMode(QAbstract3DGraph::SelectionNone); } |