From 869e8a2094b52e4f8b585d7863398bcb899b0107 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (o)" <j.wuttke@fz-juelich.de>
Date: Mon, 13 Mar 2023 17:02:23 +0100
Subject: [PATCH] Restore all Q_OBJECT removed in MR 1447

---
 GUI/Model/Data/DataItem.h                          | 1 -
 GUI/Model/Data/SpecularDataItem.h                  | 1 +
 GUI/Model/Device/InstrumentNotifier.h              | 1 +
 GUI/Model/Device/PointwiseAxisItem.h               | 1 +
 GUI/Model/Model/ParameterTuningModel.h             | 1 +
 GUI/View/Common/DataAccessWidget.h                 | 5 +++--
 GUI/View/Common/IntensityDataPropertyWidget.h      | 1 +
 GUI/View/Fit/FitSessionManager.h                   | 1 +
 GUI/View/Fit/FitSessionWidget.h                    | 1 +
 GUI/View/Fit/JobMessagePanel.h                     | 1 +
 GUI/View/Import/RealDataMaskWidget.h               | 1 +
 GUI/View/Import/RealDataPresenter.h                | 1 +
 GUI/View/Info/ComboSelectorDialog.h                | 1 +
 GUI/View/Info/DetailedMessageBox.h                 | 1 +
 GUI/View/Info/OverlayLabelController.h             | 1 +
 GUI/View/Info/OverlayLabelWidget.h                 | 1 +
 GUI/View/Info/PythonSyntaxHighlighter.h            | 1 +
 GUI/View/Instrument/InstrumentLibraryEditor.h      | 1 -
 GUI/View/Instrument/InstrumentListModel.h          | 1 +
 GUI/View/Instrument/InstrumentView.h               | 5 +++--
 GUI/View/Item/DataItemBundleWidget.h               | 1 +
 GUI/View/Item/ItemStackWidget.h                    | 1 +
 GUI/View/Item/ItemViewOverlayButtons.h             | 3 ++-
 GUI/View/Job/JobPropertiesTableModel.h             | 2 +-
 GUI/View/Job/JobResultsPresenter.h                 | 1 +
 GUI/View/Main/AboutDialog.h                        | 1 +
 GUI/View/Mask/ColorMapSceneAdaptor.h               | 1 +
 GUI/View/Mask/MaskGraphicsProxy.h                  | 1 +
 GUI/View/Numeric/SafeSpinBox.h                     | 1 +
 GUI/View/Plot2D/ColorMapCanvas.h                   | 1 +
 GUI/View/Plot2D/IntensityDataWidget.h              | 1 +
 GUI/View/PlotComparison/FitComparisonWidget.h      | 1 +
 GUI/View/PlotComparison/FitComparisonWidget1D.h    | 1 +
 GUI/View/PlotComparison/FitFlowWidget.h            | 1 +
 GUI/View/PlotSpecular/SpecularDataPropertyWidget.h | 1 +
 GUI/View/PlotSpecular/SpecularPlot.h               | 1 +
 GUI/View/PlotSpecular/SpecularPlotCanvas.h         | 1 +
 GUI/View/PlotUtil/FontScalingEvent.h               | 1 +
 GUI/View/PlotUtil/StatusLabel.h                    | 1 +
 GUI/View/SampleDesigner/CoreAndShellForm.h         | 1 +
 GUI/View/SampleDesigner/InterferenceForm.h         | 1 +
 GUI/View/SampleDesigner/LayerForm.h                | 4 ++--
 GUI/View/SampleDesigner/MaterialInplaceForm.h      | 1 +
 GUI/View/SampleDesigner/ScriptPanel.h              | 1 +
 GUI/View/SampleView/RealspacePanel.h               | 1 +
 Img3D/View/Canvas.h                                | 1 +
 46 files changed, 50 insertions(+), 10 deletions(-)

diff --git a/GUI/Model/Data/DataItem.h b/GUI/Model/Data/DataItem.h
index e25f3bc9dfa..29dbda2aea8 100644
--- a/GUI/Model/Data/DataItem.h
+++ b/GUI/Model/Data/DataItem.h
@@ -34,7 +34,6 @@ class MessageService;
 
 class DataItem : public QObject {
     Q_OBJECT
-
 protected:
     explicit DataItem(const QString& modelType);
 
diff --git a/GUI/Model/Data/SpecularDataItem.h b/GUI/Model/Data/SpecularDataItem.h
index 8541c106383..75f578b08df 100644
--- a/GUI/Model/Data/SpecularDataItem.h
+++ b/GUI/Model/Data/SpecularDataItem.h
@@ -19,6 +19,7 @@
 #include <qcustomplot.h>
 
 class SpecularDataItem : public DataItem {
+    Q_OBJECT
 public:
     static constexpr auto M_TYPE{"SpecularData"};
 
diff --git a/GUI/Model/Device/InstrumentNotifier.h b/GUI/Model/Device/InstrumentNotifier.h
index b2c28b080b9..a2d39edebab 100644
--- a/GUI/Model/Device/InstrumentNotifier.h
+++ b/GUI/Model/Device/InstrumentNotifier.h
@@ -31,6 +31,7 @@ class DoubleProperty;
 //! Calling notification methods or change methods also take care of dependent data, like in
 //! notifyWavelengthDistributionChanged().
 class InstrumentNotifier : public QObject {
+    Q_OBJECT
 public:
     InstrumentNotifier(MultiInstrumentNotifier* ec, InstrumentItem* instrument);
 
diff --git a/GUI/Model/Device/PointwiseAxisItem.h b/GUI/Model/Device/PointwiseAxisItem.h
index dd921d996fa..b4063312cb4 100644
--- a/GUI/Model/Device/PointwiseAxisItem.h
+++ b/GUI/Model/Device/PointwiseAxisItem.h
@@ -22,6 +22,7 @@ class SpecularInstrumentItem;
 
 //! Item for non-uniform axis with specified coordinates.
 class PointwiseAxisItem : public BasicAxisItem {
+    Q_OBJECT
 public:
     explicit PointwiseAxisItem(QObject* parent = nullptr);
     ~PointwiseAxisItem() override;
diff --git a/GUI/Model/Model/ParameterTuningModel.h b/GUI/Model/Model/ParameterTuningModel.h
index a3b5633f1ec..1117e0f8a3c 100644
--- a/GUI/Model/Model/ParameterTuningModel.h
+++ b/GUI/Model/Model/ParameterTuningModel.h
@@ -24,6 +24,7 @@ class ParameterLabelItem;
 //! In the fitting activity context handles dragging of ParameterItem's to the FitParametersWidget.
 
 class ParameterTuningModel : public QAbstractItemModel {
+    Q_OBJECT
 public:
     ParameterTuningModel(QObject* rootObject, QObject* parent = nullptr);
 
diff --git a/GUI/View/Common/DataAccessWidget.h b/GUI/View/Common/DataAccessWidget.h
index 70204b4873e..e1ad70c3a4b 100644
--- a/GUI/View/Common/DataAccessWidget.h
+++ b/GUI/View/Common/DataAccessWidget.h
@@ -25,6 +25,7 @@
 //! changing their properties.
 
 class DataAccessWidget : public QWidget {
+    Q_OBJECT
 public:
     explicit DataAccessWidget(QWidget* parent = nullptr);
     ~DataAccessWidget() override;
@@ -39,7 +40,7 @@ public:
     RealItem* realItem() const;
     QObject* jobRealBase() const;
 
-    // Access to concrete items:
+    //... Access to concrete items:
 
     // Specular
 
@@ -63,7 +64,7 @@ public:
     //! Difference as IntensityDataItem
     IntensityDataItem* diffIntensityDataItem() const;
 
-    // Access to lists of items:
+    //... Access to lists of items:
 
     // Specular
 
diff --git a/GUI/View/Common/IntensityDataPropertyWidget.h b/GUI/View/Common/IntensityDataPropertyWidget.h
index f93e6ab463d..ffb3dd50822 100644
--- a/GUI/View/Common/IntensityDataPropertyWidget.h
+++ b/GUI/View/Common/IntensityDataPropertyWidget.h
@@ -20,6 +20,7 @@
 //! Widget to edit properties of an IntensityDataItem.
 
 class IntensityDataPropertyWidget : public DataPropertyWidget {
+    Q_OBJECT
 public:
     explicit IntensityDataPropertyWidget(QWidget* parent = nullptr);
 
diff --git a/GUI/View/Fit/FitSessionManager.h b/GUI/View/Fit/FitSessionManager.h
index 7ee7c1ad802..da5eccea19e 100644
--- a/GUI/View/Fit/FitSessionManager.h
+++ b/GUI/View/Fit/FitSessionManager.h
@@ -24,6 +24,7 @@ class FitSessionController;
 //! Handles all activity related to the simultaneous running of fitting jobs.
 
 class FitSessionManager : public QObject {
+    Q_OBJECT
 public:
     FitSessionManager(QObject* parent = nullptr);
     ~FitSessionManager();
diff --git a/GUI/View/Fit/FitSessionWidget.h b/GUI/View/Fit/FitSessionWidget.h
index 1aa619faa26..c2f4b4e2e7a 100644
--- a/GUI/View/Fit/FitSessionWidget.h
+++ b/GUI/View/Fit/FitSessionWidget.h
@@ -29,6 +29,7 @@ class RunFitControlWidget;
 //! minimizer settings). Controlled by FitActivityPanel.
 
 class FitSessionWidget : public QWidget {
+    Q_OBJECT
 public:
     FitSessionWidget(QWidget* parent = nullptr);
     ~FitSessionWidget();
diff --git a/GUI/View/Fit/JobMessagePanel.h b/GUI/View/Fit/JobMessagePanel.h
index eb2f631e2dc..36cc3c09f58 100644
--- a/GUI/View/Fit/JobMessagePanel.h
+++ b/GUI/View/Fit/JobMessagePanel.h
@@ -21,6 +21,7 @@
 //! Shows log messages from FitActivityPanel at the bottom part of JobView.
 
 class JobMessagePanel : public QTextEdit {
+    Q_OBJECT
 public:
     JobMessagePanel(QWidget* parent = nullptr);
     ~JobMessagePanel();
diff --git a/GUI/View/Import/RealDataMaskWidget.h b/GUI/View/Import/RealDataMaskWidget.h
index f8a791cf7d6..93671bb15fa 100644
--- a/GUI/View/Import/RealDataMaskWidget.h
+++ b/GUI/View/Import/RealDataMaskWidget.h
@@ -25,6 +25,7 @@ class MaskEditorToolbar;
 //! Mask editing for RealItem on ImportDataView.
 
 class RealDataMaskWidget : public DataAccessWidget {
+    Q_OBJECT
 public:
     RealDataMaskWidget(QWidget* parent = nullptr);
 
diff --git a/GUI/View/Import/RealDataPresenter.h b/GUI/View/Import/RealDataPresenter.h
index 6c6120f5166..9f5804244e6 100644
--- a/GUI/View/Import/RealDataPresenter.h
+++ b/GUI/View/Import/RealDataPresenter.h
@@ -21,6 +21,7 @@
 //! right top corner of ImportDataView, to switch between widgets.
 
 class RealDataPresenter : public ItemComboWidget {
+    Q_OBJECT
 public:
     explicit RealDataPresenter(QWidget* parent = nullptr);
 
diff --git a/GUI/View/Info/ComboSelectorDialog.h b/GUI/View/Info/ComboSelectorDialog.h
index eba0474ba04..6943135d353 100644
--- a/GUI/View/Info/ComboSelectorDialog.h
+++ b/GUI/View/Info/ComboSelectorDialog.h
@@ -25,6 +25,7 @@ class QLabel;
 //! A dialog similar to standard QMessageBox with combo box selector.
 
 class ComboSelectorDialog : public QDialog {
+    Q_OBJECT
 public:
     ComboSelectorDialog(QWidget* parent = nullptr);
 
diff --git a/GUI/View/Info/DetailedMessageBox.h b/GUI/View/Info/DetailedMessageBox.h
index a5b9d6eefc2..c5a9661622a 100644
--- a/GUI/View/Info/DetailedMessageBox.h
+++ b/GUI/View/Info/DetailedMessageBox.h
@@ -26,6 +26,7 @@ class QTextEdit;
 //! On the contrary to QMessageBox, the dialog has size grip and visible text editor.
 
 class DetailedMessageBox : public QDialog {
+    Q_OBJECT
 public:
     DetailedMessageBox(QWidget* parent, const QString& title, const QString& text,
                        const QString& details);
diff --git a/GUI/View/Info/OverlayLabelController.h b/GUI/View/Info/OverlayLabelController.h
index 68ee629ea16..bb54e31c3c0 100644
--- a/GUI/View/Info/OverlayLabelController.h
+++ b/GUI/View/Info/OverlayLabelController.h
@@ -24,6 +24,7 @@ class QAbstractScrollArea;
 //! Controlls appearance of InfoLabelWidget (position, show/hide) on top of some scroll area.
 
 class OverlayLabelController : public QObject {
+    Q_OBJECT
 public:
     OverlayLabelController(QObject* parent = nullptr);
 
diff --git a/GUI/View/Info/OverlayLabelWidget.h b/GUI/View/Info/OverlayLabelWidget.h
index 6f278a06096..3f0196e35c9 100644
--- a/GUI/View/Info/OverlayLabelWidget.h
+++ b/GUI/View/Info/OverlayLabelWidget.h
@@ -22,6 +22,7 @@
 //! A semi-transparent overlay label to place on top of other widgets outside of any layout context.
 
 class OverlayLabelWidget : public QWidget {
+    Q_OBJECT
 public:
     OverlayLabelWidget(QWidget* parent = nullptr);
 
diff --git a/GUI/View/Info/PythonSyntaxHighlighter.h b/GUI/View/Info/PythonSyntaxHighlighter.h
index 3cbb40d46f8..accba0fa325 100644
--- a/GUI/View/Info/PythonSyntaxHighlighter.h
+++ b/GUI/View/Info/PythonSyntaxHighlighter.h
@@ -62,6 +62,7 @@ public:
 
 //! Implementation of highlighting for Python code.
 class PythonSyntaxHighlighter : public QSyntaxHighlighter {
+    Q_OBJECT
 public:
     PythonSyntaxHighlighter(QTextDocument* parent = nullptr);
 
diff --git a/GUI/View/Instrument/InstrumentLibraryEditor.h b/GUI/View/Instrument/InstrumentLibraryEditor.h
index a7cb65972a5..018aaf94238 100644
--- a/GUI/View/Instrument/InstrumentLibraryEditor.h
+++ b/GUI/View/Instrument/InstrumentLibraryEditor.h
@@ -22,7 +22,6 @@ class InstrumentItem;
 class InstrumentLibrary;
 
 namespace Ui {
-
 class InstrumentLibraryEditor;
 }
 
diff --git a/GUI/View/Instrument/InstrumentListModel.h b/GUI/View/Instrument/InstrumentListModel.h
index 0e2d5d2ff2a..a1f1af683bb 100644
--- a/GUI/View/Instrument/InstrumentListModel.h
+++ b/GUI/View/Instrument/InstrumentListModel.h
@@ -25,6 +25,7 @@ class MultiInstrumentNotifier;
 //!
 //! Used e.g. to present the instrument list in the instrument view.
 class InstrumentListModel : public QAbstractListModel {
+    Q_OBJECT
 public:
     InstrumentListModel(QObject* parent, MultiInstrumentNotifier* ec);
 
diff --git a/GUI/View/Instrument/InstrumentView.h b/GUI/View/Instrument/InstrumentView.h
index 082bc93b242..8ef4ae691bc 100644
--- a/GUI/View/Instrument/InstrumentView.h
+++ b/GUI/View/Instrument/InstrumentView.h
@@ -21,13 +21,14 @@
 class InstrumentItem;
 class InstrumentListView;
 class ProjectDocument;
-class QScrollArea;
+class QCheckBox;
 class QLabel;
 class QMenu;
-class QCheckBox;
+class QScrollArea;
 class QWidgetAction;
 
 class InstrumentView : public QWidget {
+    Q_OBJECT
 public:
     InstrumentView(QWidget* parent, ProjectDocument* document);
     void fillViewMenu(QMenu* menu);
diff --git a/GUI/View/Item/DataItemBundleWidget.h b/GUI/View/Item/DataItemBundleWidget.h
index b51282d0e9b..6e82f9a0a60 100644
--- a/GUI/View/Item/DataItemBundleWidget.h
+++ b/GUI/View/Item/DataItemBundleWidget.h
@@ -25,6 +25,7 @@ class SpecularDataItem;
 //! simultaneous, synchronous work while plotting and changing their properties.
 
 class DataItemBundleWidget : public QWidget {
+    Q_OBJECT
 public:
     explicit DataItemBundleWidget(QWidget* parent = nullptr);
     ~DataItemBundleWidget() override;
diff --git a/GUI/View/Item/ItemStackWidget.h b/GUI/View/Item/ItemStackWidget.h
index 5a38d5a2e36..4c413b69238 100644
--- a/GUI/View/Item/ItemStackWidget.h
+++ b/GUI/View/Item/ItemStackWidget.h
@@ -25,6 +25,7 @@
 //! currently selected items.
 
 class ItemStackWidget : public QWidget {
+    Q_OBJECT
 public:
     ItemStackWidget(QWidget* parent = nullptr);
 
diff --git a/GUI/View/Item/ItemViewOverlayButtons.h b/GUI/View/Item/ItemViewOverlayButtons.h
index e64544bd422..9913a19ad33 100644
--- a/GUI/View/Item/ItemViewOverlayButtons.h
+++ b/GUI/View/Item/ItemViewOverlayButtons.h
@@ -18,10 +18,11 @@
 #include <QObject>
 #include <functional>
 
-class QAction;
 class QAbstractItemView;
+class QAction;
 
 class ItemViewOverlayButtons : public QObject {
+    Q_OBJECT
 public:
     using FnGetActions = std::function<QList<QAction*>(const QModelIndex&, bool)>;
 
diff --git a/GUI/View/Job/JobPropertiesTableModel.h b/GUI/View/Job/JobPropertiesTableModel.h
index f11f7623043..8524da0c224 100644
--- a/GUI/View/Job/JobPropertiesTableModel.h
+++ b/GUI/View/Job/JobPropertiesTableModel.h
@@ -23,6 +23,7 @@ class JobItem;
 //! The name of the job is editable, all other fields are read only.
 
 class JobPropertiesTableModel : public QAbstractTableModel {
+    Q_OBJECT
 public:
     explicit JobPropertiesTableModel(QObject* parent = nullptr);
     ~JobPropertiesTableModel() override;
@@ -38,7 +39,6 @@ public:
 private:
     void notifyJobPropertyChange();
 
-private:
     JobItem* m_item;
 };
 
diff --git a/GUI/View/Job/JobResultsPresenter.h b/GUI/View/Job/JobResultsPresenter.h
index ea3bd76e704..3f155d4005f 100644
--- a/GUI/View/Job/JobResultsPresenter.h
+++ b/GUI/View/Job/JobResultsPresenter.h
@@ -24,6 +24,7 @@ enum class JobViewActivity;
 //! right top corner of JobView, to switch between widgets.
 
 class JobResultsPresenter : public ItemComboWidget {
+    Q_OBJECT
 public:
     explicit JobResultsPresenter(QWidget* parent = nullptr);
 
diff --git a/GUI/View/Main/AboutDialog.h b/GUI/View/Main/AboutDialog.h
index d93f6738f95..d20d2273d66 100644
--- a/GUI/View/Main/AboutDialog.h
+++ b/GUI/View/Main/AboutDialog.h
@@ -20,6 +20,7 @@
 //! About BornAgain dialog.
 
 class AboutDialog : public QDialog {
+    Q_OBJECT
 public:
     AboutDialog(QWidget* parent = nullptr);
 };
diff --git a/GUI/View/Mask/ColorMapSceneAdaptor.h b/GUI/View/Mask/ColorMapSceneAdaptor.h
index d90931815c1..20e20f52535 100644
--- a/GUI/View/Mask/ColorMapSceneAdaptor.h
+++ b/GUI/View/Mask/ColorMapSceneAdaptor.h
@@ -22,6 +22,7 @@ class ColorMap;
 //! Performs conversion of MaskItems coordinates between ColorMap and GraphicsScene.
 
 class ColorMapSceneAdaptor : public ISceneAdaptor {
+    Q_OBJECT
 public:
     ColorMapSceneAdaptor();
 
diff --git a/GUI/View/Mask/MaskGraphicsProxy.h b/GUI/View/Mask/MaskGraphicsProxy.h
index a9afd973f89..1ad10bfdc35 100644
--- a/GUI/View/Mask/MaskGraphicsProxy.h
+++ b/GUI/View/Mask/MaskGraphicsProxy.h
@@ -26,6 +26,7 @@ class ISceneAdaptor;
 //! Graphics proxy to place QWidget inside QGraphicsScene, used by MaskEditorCanvas.
 
 class MaskGraphicsProxy : public QGraphicsProxyWidget {
+    Q_OBJECT
 public:
     MaskGraphicsProxy();
     ~MaskGraphicsProxy() override;
diff --git a/GUI/View/Numeric/SafeSpinBox.h b/GUI/View/Numeric/SafeSpinBox.h
index ae122b2427f..7e76fd152b9 100644
--- a/GUI/View/Numeric/SafeSpinBox.h
+++ b/GUI/View/Numeric/SafeSpinBox.h
@@ -20,6 +20,7 @@
 //! Spinbox that enables scrolling only on focus
 
 class SafeSpinBox : public QSpinBox {
+    Q_OBJECT
 public:
     explicit SafeSpinBox(bool easyScrollable = false, QWidget* parent = nullptr);
 
diff --git a/GUI/View/Plot2D/ColorMapCanvas.h b/GUI/View/Plot2D/ColorMapCanvas.h
index 1969d942162..d172e6cc0ec 100644
--- a/GUI/View/Plot2D/ColorMapCanvas.h
+++ b/GUI/View/Plot2D/ColorMapCanvas.h
@@ -27,6 +27,7 @@ class QCustomPlot;
 //! Controls appearance of the status string.
 
 class ColorMapCanvas : public QWidget {
+    Q_OBJECT
 public:
     explicit ColorMapCanvas(QWidget* parent = nullptr);
 
diff --git a/GUI/View/Plot2D/IntensityDataWidget.h b/GUI/View/Plot2D/IntensityDataWidget.h
index 4e1d014dadc..10f8c383358 100644
--- a/GUI/View/Plot2D/IntensityDataWidget.h
+++ b/GUI/View/Plot2D/IntensityDataWidget.h
@@ -26,6 +26,7 @@ class IntensityDataFFTPresenter;
 //! (ItemPropertyWidget) of intensity data item.
 
 class IntensityDataWidget : public DataAccessWidget {
+    Q_OBJECT
 public:
     IntensityDataWidget(QWidget* parent = nullptr);
 
diff --git a/GUI/View/PlotComparison/FitComparisonWidget.h b/GUI/View/PlotComparison/FitComparisonWidget.h
index c18ac81b314..dd1797560ea 100644
--- a/GUI/View/PlotComparison/FitComparisonWidget.h
+++ b/GUI/View/PlotComparison/FitComparisonWidget.h
@@ -26,6 +26,7 @@ class QAction;
 //! Plots realdata, simulated data and relative difference map during the course of the fit.
 
 class FitComparisonWidget : public DataAccessWidget {
+    Q_OBJECT
 public:
     explicit FitComparisonWidget(QWidget* parent = nullptr);
 
diff --git a/GUI/View/PlotComparison/FitComparisonWidget1D.h b/GUI/View/PlotComparison/FitComparisonWidget1D.h
index e07068b5d2b..03e592ce94a 100644
--- a/GUI/View/PlotComparison/FitComparisonWidget1D.h
+++ b/GUI/View/PlotComparison/FitComparisonWidget1D.h
@@ -29,6 +29,7 @@ class SpecularPlotCanvas;
 //! during the course of the fit.
 
 class FitComparisonWidget1D : public DataAccessWidget {
+    Q_OBJECT
 public:
     explicit FitComparisonWidget1D(QWidget* parent = nullptr);
 
diff --git a/GUI/View/PlotComparison/FitFlowWidget.h b/GUI/View/PlotComparison/FitFlowWidget.h
index d1e2efd874a..25bdcd6dfd0 100644
--- a/GUI/View/PlotComparison/FitFlowWidget.h
+++ b/GUI/View/PlotComparison/FitFlowWidget.h
@@ -24,6 +24,7 @@ class HistogramPlot;
 //! The main goal is to fill vacant place in FitComparisonWidget.
 
 class FitFlowWidget : public DataAccessWidget {
+    Q_OBJECT
 public:
     explicit FitFlowWidget(QWidget* parent = nullptr);
 
diff --git a/GUI/View/PlotSpecular/SpecularDataPropertyWidget.h b/GUI/View/PlotSpecular/SpecularDataPropertyWidget.h
index 778555e63b3..783344f7c2c 100644
--- a/GUI/View/PlotSpecular/SpecularDataPropertyWidget.h
+++ b/GUI/View/PlotSpecular/SpecularDataPropertyWidget.h
@@ -20,6 +20,7 @@
 //! Widget to edit properties of a SpecularDataItem.
 
 class SpecularDataPropertyWidget : public DataPropertyWidget {
+    Q_OBJECT
 public:
     explicit SpecularDataPropertyWidget(QWidget* parent = nullptr);
 
diff --git a/GUI/View/PlotSpecular/SpecularPlot.h b/GUI/View/PlotSpecular/SpecularPlot.h
index 82c9c8de291..f54e615819d 100644
--- a/GUI/View/PlotSpecular/SpecularPlot.h
+++ b/GUI/View/PlotSpecular/SpecularPlot.h
@@ -33,6 +33,7 @@ class UpdateTimer;
 //! for more complicated plotting widgets. Corresponds to ColorMap for 2D intensity data.
 
 class SpecularPlot : public ScientificPlot {
+    Q_OBJECT
 public:
     explicit SpecularPlot(QWidget* parent = nullptr);
 
diff --git a/GUI/View/PlotSpecular/SpecularPlotCanvas.h b/GUI/View/PlotSpecular/SpecularPlotCanvas.h
index 3486e66e282..4e5ac25a567 100644
--- a/GUI/View/PlotSpecular/SpecularPlotCanvas.h
+++ b/GUI/View/PlotSpecular/SpecularPlotCanvas.h
@@ -27,6 +27,7 @@ class SpecularPlot;
 //! Contains SpecularPlot for specular data presentation, and provides status string appearance.
 
 class SpecularPlotCanvas : public QWidget {
+    Q_OBJECT
 public:
     explicit SpecularPlotCanvas(QWidget* parent = nullptr);
 
diff --git a/GUI/View/PlotUtil/FontScalingEvent.h b/GUI/View/PlotUtil/FontScalingEvent.h
index 6597de89dd0..cc60e93c606 100644
--- a/GUI/View/PlotUtil/FontScalingEvent.h
+++ b/GUI/View/PlotUtil/FontScalingEvent.h
@@ -26,6 +26,7 @@ class ScientificPlot;
 //! on resize events.
 
 class FontScalingEvent : public QObject {
+    Q_OBJECT
 public:
     explicit FontScalingEvent(ScientificPlot* plot, QWidget* parent);
 
diff --git a/GUI/View/PlotUtil/StatusLabel.h b/GUI/View/PlotUtil/StatusLabel.h
index 9fadf1dca7e..b0684aaa7e4 100644
--- a/GUI/View/PlotUtil/StatusLabel.h
+++ b/GUI/View/PlotUtil/StatusLabel.h
@@ -26,6 +26,7 @@ class QPaintEvent;
 //! depending from available space.
 
 class StatusLabel : public QFrame {
+    Q_OBJECT
 public:
     explicit StatusLabel(QWidget* parent = nullptr);
 
diff --git a/GUI/View/SampleDesigner/CoreAndShellForm.h b/GUI/View/SampleDesigner/CoreAndShellForm.h
index 55e100d580c..4b3771c8b46 100644
--- a/GUI/View/SampleDesigner/CoreAndShellForm.h
+++ b/GUI/View/SampleDesigner/CoreAndShellForm.h
@@ -26,6 +26,7 @@ class SampleEditorController;
 
 //! Form for editing a core/shell particle
 class CoreAndShellForm : public QGroupBox {
+    Q_OBJECT
 public:
     CoreAndShellForm(QWidget* parent, CoreAndShellItem* item, SampleEditorController* ec,
                      bool allowRemove = true);
diff --git a/GUI/View/SampleDesigner/InterferenceForm.h b/GUI/View/SampleDesigner/InterferenceForm.h
index ae96618693c..201053631e5 100644
--- a/GUI/View/SampleDesigner/InterferenceForm.h
+++ b/GUI/View/SampleDesigner/InterferenceForm.h
@@ -24,6 +24,7 @@ class SampleEditorController;
 
 //! Form for editing interference functions
 class InterferenceForm : public QGroupBox {
+    Q_OBJECT
 public:
     InterferenceForm(QWidget* parent, ParticleLayoutItem* layoutItem, SampleEditorController* ec);
 
diff --git a/GUI/View/SampleDesigner/LayerForm.h b/GUI/View/SampleDesigner/LayerForm.h
index 5ec3ec21584..8b0169bcec7 100644
--- a/GUI/View/SampleDesigner/LayerForm.h
+++ b/GUI/View/SampleDesigner/LayerForm.h
@@ -24,8 +24,8 @@ class WidgetMoverButton;
 
 //! Form for editing a layer
 class LayerForm : public QGroupBox {
-    Q_OBJECT // critically important ... even if we don't understand why
-        public : LayerForm(QWidget* parent, LayerItem* layer, SampleEditorController* ec);
+    Q_OBJECT
+public : LayerForm(QWidget* parent, LayerItem* layer, SampleEditorController* ec);
 
     void enableStructureEditing(bool b);
     void updateLayerPositionDependentElements();
diff --git a/GUI/View/SampleDesigner/MaterialInplaceForm.h b/GUI/View/SampleDesigner/MaterialInplaceForm.h
index e18074cadc1..068ff3756be 100644
--- a/GUI/View/SampleDesigner/MaterialInplaceForm.h
+++ b/GUI/View/SampleDesigner/MaterialInplaceForm.h
@@ -23,6 +23,7 @@ class SampleEditorController;
 
 //! Form to select a material and to edit it in-place
 class MaterialInplaceForm : public QWidget {
+    Q_OBJECT
 public:
     MaterialInplaceForm(QWidget* parent, ItemWithMaterial* item, SampleEditorController* ec);
 
diff --git a/GUI/View/SampleDesigner/ScriptPanel.h b/GUI/View/SampleDesigner/ScriptPanel.h
index 15f676492e9..4269616f041 100644
--- a/GUI/View/SampleDesigner/ScriptPanel.h
+++ b/GUI/View/SampleDesigner/ScriptPanel.h
@@ -29,6 +29,7 @@ class UpdateTimer;
 //! Resides at the bottom of SampleView and displays a Python script.
 
 class ScriptPanel : public QWidget {
+    Q_OBJECT
 public:
     explicit ScriptPanel(QWidget* parent);
 
diff --git a/GUI/View/SampleView/RealspacePanel.h b/GUI/View/SampleView/RealspacePanel.h
index 8ca6d75e6d6..31f5493124a 100644
--- a/GUI/View/SampleView/RealspacePanel.h
+++ b/GUI/View/SampleView/RealspacePanel.h
@@ -22,6 +22,7 @@ class RealspaceWidget;
 //! Panel to show 3D view of sample. Contains toolbar and RealspaceWidget
 
 class RealspacePanel : public QWidget {
+    Q_OBJECT
 public:
     RealspacePanel(QWidget* parent);
 
diff --git a/Img3D/View/Canvas.h b/Img3D/View/Canvas.h
index 5cd545b2012..adf576950a9 100644
--- a/Img3D/View/Canvas.h
+++ b/Img3D/View/Canvas.h
@@ -31,6 +31,7 @@ class PlottableBody;
 class Shader;
 
 class Canvas : public QOpenGLWidget, protected QOpenGLFunctions {
+    Q_OBJECT
 public:
     Canvas();
     ~Canvas() override;
-- 
GitLab