gui: scroll area uniquie pointers to remove mem leak

This commit is contained in:
maliakal_d 2020-03-06 19:44:44 +01:00
parent 908afc790d
commit a4fa9ff480
2 changed files with 14 additions and 13 deletions

View File

@ -16,13 +16,15 @@ class qTabMessages;
#include "Detector.h" #include "Detector.h"
#include <QTabWidget> #include <QTabWidget>
class QScrollArea;
class QResizeEvent; 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 { class MyTabWidget : public QTabWidget {
public: public:
MyTabWidget(QWidget *parent = 0) { setParent(parent); } MyTabWidget(QWidget *parent = 0) { setParent(parent); }
/** Overridden method from QTabWidget */ /** Overridden protected method from QTabWidget */
QTabBar *tabBar() { return QTabWidget::tabBar(); } QTabBar *tabBar() { return QTabWidget::tabBar(); }
}; };
@ -72,6 +74,7 @@ class qDetectorMain : public QMainWindow, private Ui::DetectorMainObject {
std::unique_ptr<sls::Detector> det; std::unique_ptr<sls::Detector> det;
std::unique_ptr<qDrawPlot> plot; std::unique_ptr<qDrawPlot> plot;
std::unique_ptr<MyTabWidget> tabs; std::unique_ptr<MyTabWidget> tabs;
std::unique_ptr<QScrollArea> scroll[NumberOfTabs];
std::unique_ptr<qTabMeasurement> tabMeasurement; std::unique_ptr<qTabMeasurement> tabMeasurement;
std::unique_ptr<qTabDataOutput> tabDataOutput; std::unique_ptr<qTabDataOutput> tabDataOutput;
std::unique_ptr<qTabPlot> tabPlot; std::unique_ptr<qTabPlot> tabPlot;

View File

@ -142,9 +142,8 @@ void qDetectorMain::SetUpWidgetWindow() {
tabDeveloper = sls::make_unique<qTabDeveloper>(this, det.get()); tabDeveloper = sls::make_unique<qTabDeveloper>(this, det.get());
// creating the scroll area widgets for the tabs // creating the scroll area widgets for the tabs
QScrollArea *scroll[NumberOfTabs];
for (int i = 0; i < NumberOfTabs; ++i) { for (int i = 0; i < NumberOfTabs; ++i) {
scroll[i] = new QScrollArea; scroll[i] = sls::make_unique<QScrollArea>();
scroll[i]->setFrameShape(QFrame::NoFrame); scroll[i]->setFrameShape(QFrame::NoFrame);
} }
// setting the tab widgets to the scrollareas // setting the tab widgets to the scrollareas
@ -156,13 +155,13 @@ void qDetectorMain::SetUpWidgetWindow() {
scroll[DEBUGGING]->setWidget(tabDebugging.get()); scroll[DEBUGGING]->setWidget(tabDebugging.get());
scroll[DEVELOPER]->setWidget(tabDeveloper.get()); scroll[DEVELOPER]->setWidget(tabDeveloper.get());
// inserting all the tabs // inserting all the tabs
tabs->insertTab(MEASUREMENT, scroll[MEASUREMENT], "Measurement"); tabs->insertTab(MEASUREMENT, scroll[MEASUREMENT].get(), "Measurement");
tabs->insertTab(DATAOUTPUT, scroll[DATAOUTPUT], "Data Output"); tabs->insertTab(DATAOUTPUT, scroll[DATAOUTPUT].get(), "Data Output");
tabs->insertTab(PLOT, scroll[PLOT], "Plot"); tabs->insertTab(PLOT, scroll[PLOT].get(), "Plot");
tabs->insertTab(SETTINGS, scroll[SETTINGS], "Settings"); tabs->insertTab(SETTINGS, scroll[SETTINGS].get(), "Settings");
tabs->insertTab(ADVANCED, scroll[ADVANCED], "Advanced"); tabs->insertTab(ADVANCED, scroll[ADVANCED].get(), "Advanced");
tabs->insertTab(DEBUGGING, scroll[DEBUGGING], "Debugging"); tabs->insertTab(DEBUGGING, scroll[DEBUGGING].get(), "Debugging");
tabs->insertTab(DEVELOPER, scroll[DEVELOPER], "Developer"); tabs->insertTab(DEVELOPER, scroll[DEVELOPER].get(), "Developer");
// no scroll buttons this way // no scroll buttons this way
tabs->insertTab(MESSAGES, tabMessages.get(), "Terminal"); tabs->insertTab(MESSAGES, tabMessages.get(), "Terminal");
@ -182,8 +181,7 @@ void qDetectorMain::SetUpWidgetWindow() {
defaultTabColor = tabs->tabBar()->tabTextColor(DATAOUTPUT); defaultTabColor = tabs->tabBar()->tabTextColor(DATAOUTPUT);
// Set the current tab(measurement) to blue as it is the current one // Set the current tab(measurement) to blue as it is the current one
tabs->tabBar()->setTabTextColor(0, QColor(0, 0, 200, 255)); 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()->setExpanding(true);
tabs->tabBar()->setFixedWidth(width() + 61);
// mode setup - to set up the tabs initially as disabled, not in form so // mode setup - to set up the tabs initially as disabled, not in form so
// done here // done here