From a4fa9ff4806467f1189e62ee8ac6ef1f15d4215c Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Fri, 6 Mar 2020 19:44:44 +0100 Subject: [PATCH] gui: scroll area uniquie pointers to remove mem leak --- slsDetectorGui/include/qDetectorMain.h | 7 +++++-- slsDetectorGui/src/qDetectorMain.cpp | 20 +++++++++----------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/slsDetectorGui/include/qDetectorMain.h b/slsDetectorGui/include/qDetectorMain.h index 0b93dac7a..57824fcbb 100755 --- a/slsDetectorGui/include/qDetectorMain.h +++ b/slsDetectorGui/include/qDetectorMain.h @@ -16,13 +16,15 @@ class qTabMessages; #include "Detector.h" #include + +class QScrollArea; class QResizeEvent; -/** To Over-ride the QTabWidget class to get the tabBar */ +/** To Over-ride the QTabWidget class to get the tabBar protected methodTabWidget */ class MyTabWidget : public QTabWidget { public: MyTabWidget(QWidget *parent = 0) { setParent(parent); } - /** Overridden method from QTabWidget */ + /** Overridden protected method from QTabWidget */ QTabBar *tabBar() { return QTabWidget::tabBar(); } }; @@ -72,6 +74,7 @@ class qDetectorMain : public QMainWindow, private Ui::DetectorMainObject { std::unique_ptr det; std::unique_ptr plot; std::unique_ptr tabs; + std::unique_ptr scroll[NumberOfTabs]; std::unique_ptr tabMeasurement; std::unique_ptr tabDataOutput; std::unique_ptr tabPlot; diff --git a/slsDetectorGui/src/qDetectorMain.cpp b/slsDetectorGui/src/qDetectorMain.cpp index 40c6712e2..71a140339 100755 --- a/slsDetectorGui/src/qDetectorMain.cpp +++ b/slsDetectorGui/src/qDetectorMain.cpp @@ -142,9 +142,8 @@ void qDetectorMain::SetUpWidgetWindow() { tabDeveloper = sls::make_unique(this, det.get()); // creating the scroll area widgets for the tabs - QScrollArea *scroll[NumberOfTabs]; for (int i = 0; i < NumberOfTabs; ++i) { - scroll[i] = new QScrollArea; + scroll[i] = sls::make_unique(); scroll[i]->setFrameShape(QFrame::NoFrame); } // setting the tab widgets to the scrollareas @@ -156,13 +155,13 @@ void qDetectorMain::SetUpWidgetWindow() { scroll[DEBUGGING]->setWidget(tabDebugging.get()); scroll[DEVELOPER]->setWidget(tabDeveloper.get()); // inserting all the tabs - tabs->insertTab(MEASUREMENT, scroll[MEASUREMENT], "Measurement"); - tabs->insertTab(DATAOUTPUT, scroll[DATAOUTPUT], "Data Output"); - tabs->insertTab(PLOT, scroll[PLOT], "Plot"); - tabs->insertTab(SETTINGS, scroll[SETTINGS], "Settings"); - tabs->insertTab(ADVANCED, scroll[ADVANCED], "Advanced"); - tabs->insertTab(DEBUGGING, scroll[DEBUGGING], "Debugging"); - tabs->insertTab(DEVELOPER, scroll[DEVELOPER], "Developer"); + tabs->insertTab(MEASUREMENT, scroll[MEASUREMENT].get(), "Measurement"); + tabs->insertTab(DATAOUTPUT, scroll[DATAOUTPUT].get(), "Data Output"); + tabs->insertTab(PLOT, scroll[PLOT].get(), "Plot"); + tabs->insertTab(SETTINGS, scroll[SETTINGS].get(), "Settings"); + tabs->insertTab(ADVANCED, scroll[ADVANCED].get(), "Advanced"); + tabs->insertTab(DEBUGGING, scroll[DEBUGGING].get(), "Debugging"); + tabs->insertTab(DEVELOPER, scroll[DEVELOPER].get(), "Developer"); // no scroll buttons this way tabs->insertTab(MESSAGES, tabMessages.get(), "Terminal"); @@ -182,8 +181,7 @@ void qDetectorMain::SetUpWidgetWindow() { defaultTabColor = tabs->tabBar()->tabTextColor(DATAOUTPUT); // Set the current tab(measurement) to blue as it is the current one tabs->tabBar()->setTabTextColor(0, QColor(0, 0, 200, 255)); - // increase the width so it uses all the empty space for the tab titles - tabs->tabBar()->setFixedWidth(width() + 61); + tabs->tabBar()->setExpanding(true); // mode setup - to set up the tabs initially as disabled, not in form so // done here