diff --git a/Makefile.common b/Makefile.common
index dcb13933a4..4b0b631674 100644
--- a/Makefile.common
+++ b/Makefile.common
@@ -250,7 +250,9 @@ ifeq ($(HAVE_QT), 1)
HAVE_QT_WRAPPER=0
OBJ += ui/drivers/ui_qt.o \
ui/drivers/qt/ui_qt_application.o \
- ui/drivers/qt/ui_qt_window.o
+ ui/drivers/qt/ui_qt_window.o \
+ ui/drivers/qt/ui_qt_browser_window.o \
+ ui/drivers/qt/ui_qt_msg_window.o
ifneq ($(findstring Linux,$(OS)),)
DEFINES += -I/usr/include/qt -fPIC
diff --git a/ui/drivers/qt/ui_qt_browser_window.cpp b/ui/drivers/qt/ui_qt_browser_window.cpp
new file mode 100644
index 0000000000..ed6e7bfe30
--- /dev/null
+++ b/ui/drivers/qt/ui_qt_browser_window.cpp
@@ -0,0 +1,38 @@
+/* RetroArch - A frontend for libretro.
+ * Copyright (C) 2011-2016 - Daniel De Matteis
+ *
+ * RetroArch is free software: you can redistribute it and/or modify it under the terms
+ * of the GNU General Public License as published by the Free Software Found-
+ * ation, either version 3 of the License, or (at your option) any later version.
+ *
+ * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with RetroArch.
+ * If not, see .
+ */
+
+#include
+#include
+#include
+#include
+#include
+
+#include "../../ui_companion_driver.h"
+
+static bool ui_browser_window_qt_open(ui_browser_window_state_t *state)
+{
+ return true;
+}
+
+static bool ui_browser_window_qt_save(ui_browser_window_state_t *state)
+{
+ return false;
+}
+
+const ui_browser_window_t ui_browser_window_qt = {
+ ui_browser_window_qt_open,
+ ui_browser_window_qt_save,
+ "qt"
+};
diff --git a/ui/drivers/qt/ui_qt_msg_window.cpp b/ui/drivers/qt/ui_qt_msg_window.cpp
new file mode 100644
index 0000000000..a37a939b3b
--- /dev/null
+++ b/ui/drivers/qt/ui_qt_msg_window.cpp
@@ -0,0 +1,106 @@
+/* RetroArch - A frontend for libretro.
+ * Copyright (C) 2011-2016 - Daniel De Matteis
+ *
+ * RetroArch is free software: you can redistribute it and/or modify it under the terms
+ * of the GNU General Public License as published by the Free Software Found-
+ * ation, either version 3 of the License, or (at your option) any later version.
+ *
+ * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with RetroArch.
+ * If not, see .
+ */
+
+#include
+#include
+#include
+#include
+#include
+
+#include
+
+#include "../../ui_companion_driver.h"
+
+static enum ui_msg_window_response ui_msg_window_qt_response(ui_msg_window_state *state, QMessageBox::StandardButtons response)
+{
+ switch (response)
+ {
+ case QMessageBox::Ok:
+ return UI_MSG_RESPONSE_OK;
+ case QMessageBox::Cancel:
+ return UI_MSG_RESPONSE_CANCEL;
+ case QMessageBox::Yes:
+ return UI_MSG_RESPONSE_YES;
+ case QMessageBox::No:
+ return UI_MSG_RESPONSE_NO;
+ default:
+ break;
+ }
+
+ switch (state->buttons)
+ {
+ case UI_MSG_WINDOW_OK:
+ return UI_MSG_RESPONSE_OK;
+ case UI_MSG_WINDOW_OKCANCEL:
+ return UI_MSG_RESPONSE_CANCEL;
+ case UI_MSG_WINDOW_YESNO:
+ return UI_MSG_RESPONSE_NO;
+ case UI_MSG_WINDOW_YESNOCANCEL:
+ return UI_MSG_RESPONSE_CANCEL;
+ default:
+ break;
+ }
+
+ return UI_MSG_RESPONSE_NA;
+}
+
+static QFlags ui_msg_window_qt_buttons(ui_msg_window_state *state)
+{
+ switch (state->buttons)
+ {
+ case UI_MSG_WINDOW_OK:
+ return QMessageBox::Ok;
+ case UI_MSG_WINDOW_OKCANCEL:
+ return QMessageBox::Cancel;
+ case UI_MSG_WINDOW_YESNO:
+ return (QMessageBox::Yes | QMessageBox::No);
+ case UI_MSG_WINDOW_YESNOCANCEL:
+ return (QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel);
+ }
+
+ return QMessageBox::NoButton;
+}
+
+static enum ui_msg_window_response ui_msg_window_qt_error(ui_msg_window_state *state)
+{
+ QFlags flags = ui_msg_window_qt_buttons(state);
+ return ui_msg_window_qt_response(state, QMessageBox::critical((QWidget*)state->window, state->title, state->text, flags));
+}
+
+static enum ui_msg_window_response ui_msg_window_qt_information(ui_msg_window_state *state)
+{
+ QFlags flags = ui_msg_window_qt_buttons(state);
+ return ui_msg_window_qt_response(state, QMessageBox::information((QWidget*)state->window, state->title, state->text, flags));
+}
+
+static enum ui_msg_window_response ui_msg_window_qt_question(ui_msg_window_state *state)
+{
+ QFlags flags = ui_msg_window_qt_buttons(state);
+ return ui_msg_window_qt_response(state, QMessageBox::question((QWidget*)state->window, state->title, state->text, flags));
+}
+
+static enum ui_msg_window_response ui_msg_window_qt_warning(ui_msg_window_state *state)
+{
+ QFlags flags = ui_msg_window_qt_buttons(state);
+ return ui_msg_window_qt_response(state, QMessageBox::warning((QWidget*)state->window, state->title, state->text, flags));
+}
+
+const ui_msg_window_t ui_msg_window_qt = {
+ ui_msg_window_qt_error,
+ ui_msg_window_qt_information,
+ ui_msg_window_qt_question,
+ ui_msg_window_qt_warning,
+ "qt"
+};
diff --git a/ui/drivers/ui_qt.c b/ui/drivers/ui_qt.c
index 8bdf23a3cc..14d9d58dd7 100644
--- a/ui/drivers/ui_qt.c
+++ b/ui/drivers/ui_qt.c
@@ -143,8 +143,8 @@ const ui_companion_driver_t ui_companion_qt = {
NULL,
NULL,
NULL,
- &ui_browser_window_null,
- &ui_msg_window_null,
+ &ui_browser_window_qt,
+ &ui_msg_window_qt,
&ui_window_qt,
&ui_application_qt,
"qt",
diff --git a/ui/ui_companion_driver.h b/ui/ui_companion_driver.h
index 9708cee775..52cfbdab7b 100644
--- a/ui/ui_companion_driver.h
+++ b/ui/ui_companion_driver.h
@@ -61,6 +61,7 @@ typedef struct ui_msg_window_state
enum ui_msg_window_buttons buttons;
char *text;
char *title;
+ void *window;
} ui_msg_window_state;
typedef struct ui_browser_window_state
@@ -141,6 +142,7 @@ typedef struct ui_companion_driver
extern const ui_browser_window_t ui_browser_window_null;
extern const ui_browser_window_t ui_browser_window_cocoa;
+extern const ui_browser_window_t ui_browser_window_qt;
extern const ui_browser_window_t ui_browser_window_win32;
extern const ui_window_t ui_window_null;
@@ -150,6 +152,7 @@ extern const ui_window_t ui_window_win32;
extern const ui_msg_window_t ui_msg_window_null;
extern const ui_msg_window_t ui_msg_window_win32;
+extern const ui_msg_window_t ui_msg_window_qt;
extern const ui_msg_window_t ui_msg_window_cocoa;
extern const ui_application_t ui_application_null;