diff --git a/src/module/module_qt_window.cc b/src/module/module_qt_window.cc
index 5daad1ec45986d0b1fcb5074075db601a1d122dd..514d6c31cdf4a8803b67299d4d8e4dc3cbf18b25 100644
--- a/src/module/module_qt_window.cc
+++ b/src/module/module_qt_window.cc
@@ -213,7 +213,8 @@ module_qt_window_new(struct module_qt_window_s **win, struct queue *queue, lkt_d
 static void
 module_qt_window_close(struct module_qt_window_s *win)
 {
-    RETURN_UNLESS(win && win->mpv_widget, "Invalid arguments", NOTHING);
+    RETURN_UNLESS(win && win->mpv_widget && win->main_window, "Invalid arguments", NOTHING);
+    ___module_qt_window_close(win);
 }
 
 static void
diff --git a/src/module/qt_window/mpvwidget_interface.cc b/src/module/qt_window/mpvwidget_interface.cc
index 40514290f42cdf16f5dabac4305ba012cee0f966..26e963bca7efb7e3a9288ec211a3fee08a9c2e0c 100644
--- a/src/module/qt_window/mpvwidget_interface.cc
+++ b/src/module/qt_window/mpvwidget_interface.cc
@@ -61,3 +61,10 @@ ___module_qt_window_toggle_pause(struct module_qt_window_s *win)
 {
     return win->mpv_widget->toggle_pause();
 }
+
+bool
+___module_qt_window_close(struct module_qt_window_s *win)
+{
+    delete(win->main_window);
+    return true;
+}
diff --git a/src/module/qt_window/mpvwidget_interface.hh b/src/module/qt_window/mpvwidget_interface.hh
index ac5445626c24c22a7bb3b765cddced563466a607..f79eca9af847f25a72c97392c3e9fa2c16371919 100644
--- a/src/module/qt_window/mpvwidget_interface.hh
+++ b/src/module/qt_window/mpvwidget_interface.hh
@@ -12,3 +12,4 @@ bool ___module_qt_window_set_volume(struct module_qt_window_s *, int);
 bool ___module_qt_window_set_position(struct module_qt_window_s *, int);
 bool ___module_qt_window_load_file(struct module_qt_window_s *, const char *);
 bool ___module_qt_window_toggle_pause(struct module_qt_window_s *);
+bool ___module_qt_window_close(struct module_qt_window_s *);