diff --git a/modules/gui/qt/dialogs/vlm/vlm.hpp b/modules/gui/qt/dialogs/vlm/vlm.hpp
index cbaa5c89aa4a1ff9f95ba089f3f533e9ddda5a55..f46a3f97a0957103919dcfbb84c12d9b410b993a 100644
--- a/modules/gui/qt/dialogs/vlm/vlm.hpp
+++ b/modules/gui/qt/dialogs/vlm/vlm.hpp
@@ -149,6 +149,7 @@ public:
     VLMAWidget( VLMWrapper *, const QString& name, const QString& input,
                 const QString& inputOptions, const QString& output,
                 bool _enable, VLMDialog *parent, int _type = QVLM_Broadcast );
+    virtual ~VLMAWidget() = default;
     virtual void update() = 0;
 protected:
     QLabel *nameLabel;
diff --git a/modules/gui/qt/maininterface/compositor.hpp b/modules/gui/qt/maininterface/compositor.hpp
index 85c123058830ee02ee8753e908b30e1fa50bd0f2..e238e41b03097a5b9f7d330f9c1d3d3e8391a262 100644
--- a/modules/gui/qt/maininterface/compositor.hpp
+++ b/modules/gui/qt/maininterface/compositor.hpp
@@ -94,6 +94,7 @@ public:
     class QmlUISurface
     {
     public:
+        virtual ~QmlUISurface() = default;
         virtual QQmlEngine* engine() const = 0;
         virtual void setContent(QQmlComponent *component, QQuickItem *item) = 0;
 
diff --git a/modules/gui/qt/medialibrary/medialib.hpp b/modules/gui/qt/medialibrary/medialib.hpp
index c7619a91d59e1958c80850486023239b94793ecd..9bd07d0759fcf0067bd6a7561e58165bf31c8ea4 100644
--- a/modules/gui/qt/medialibrary/medialib.hpp
+++ b/modules/gui/qt/medialibrary/medialib.hpp
@@ -218,6 +218,7 @@ class RunOnMLThreadBaseRunner : public QObject, public QRunnable
 {
     Q_OBJECT
 public:
+    virtual ~RunOnMLThreadBaseRunner() = default;
     virtual void runUICallback() = 0;
     virtual void cancel() = 0;
 signals:
diff --git a/modules/gui/qt/medialibrary/mlfoldersmodel.hpp b/modules/gui/qt/medialibrary/mlfoldersmodel.hpp
index 92fd5b831cd0bfcd0a50443ade04c8d04a64b56d..9c79a6778f10fd262b0668f29bae541919bcdf38 100644
--- a/modules/gui/qt/medialibrary/mlfoldersmodel.hpp
+++ b/modules/gui/qt/medialibrary/mlfoldersmodel.hpp
@@ -55,6 +55,7 @@ public:
     };
 
     MLFoldersBaseModel( QObject *parent = nullptr );
+    virtual ~MLFoldersBaseModel() = default;
 
     void setCtx(MainCtx* ctx);
     inline MainCtx* getCtx() { return m_ctx; }
diff --git a/modules/gui/qt/util/asynctask.hpp b/modules/gui/qt/util/asynctask.hpp
index 81fcc54022ab1aac946f60759ae9eacce5a5bb88..e8d0a310ef2ee1bcf0f1495cc6834bee415f8ac0 100644
--- a/modules/gui/qt/util/asynctask.hpp
+++ b/modules/gui/qt/util/asynctask.hpp
@@ -150,6 +150,8 @@ template <typename T>
 class AsyncTask : public BaseAsyncTask
 {
 public:
+    virtual ~AsyncTask() = default;
+
     virtual T execute() = 0;
 
     /**
diff --git a/modules/gui/qt/util/selectable_list_model.hpp b/modules/gui/qt/util/selectable_list_model.hpp
index 4682e66bbba950a247d02fc589d6e9a8739adb68..1c9b948906eaf6b88133104f7b8d060a285161b0 100644
--- a/modules/gui/qt/util/selectable_list_model.hpp
+++ b/modules/gui/qt/util/selectable_list_model.hpp
@@ -32,6 +32,8 @@ public:
     SelectableListModel(QObject *parent = nullptr) :
         QAbstractListModel(parent) {}
 
+    virtual ~SelectableListModel() = default;
+
     Q_INVOKABLE bool isSelected(int index) const;
     Q_INVOKABLE void setSelected(int index, bool selected);
     Q_INVOKABLE void toggleSelected(int index);