diff --git a/src/yuzu/configuration/configuration_shared.cpp b/src/yuzu/configuration/configuration_shared.cpp
index 8fd12c9e85..ce12f55a25 100644
--- a/src/yuzu/configuration/configuration_shared.cpp
+++ b/src/yuzu/configuration/configuration_shared.cpp
@@ -4,10 +4,19 @@
 #include <QCheckBox>
 #include <QObject>
 #include <QString>
+#include <QWidget>
 #include "common/settings.h"
 #include "yuzu/configuration/configuration_shared.h"
 #include "yuzu/configuration/configure_per_game.h"
 
+namespace ConfigurationShared {
+
+Tab::Tab(QWidget* parent) : QWidget(parent) {}
+
+Tab::~Tab() {}
+
+} // namespace ConfigurationShared
+
 void ConfigurationShared::ApplyPerGameSetting(Settings::SwitchableSetting<bool>* setting,
                                               const QCheckBox* checkbox,
                                               const CheckState& tracker) {
diff --git a/src/yuzu/configuration/configuration_shared.h b/src/yuzu/configuration/configuration_shared.h
index 1e61bcbebe..ea8b18755b 100644
--- a/src/yuzu/configuration/configuration_shared.h
+++ b/src/yuzu/configuration/configuration_shared.h
@@ -5,10 +5,23 @@
 
 #include <QCheckBox>
 #include <QComboBox>
+#include <QWidget>
+#include <qobjectdefs.h>
 #include "common/settings.h"
 
 namespace ConfigurationShared {
 
+class Tab : public QWidget {
+    Q_OBJECT
+
+public:
+    explicit Tab(QWidget* parent = nullptr);
+    ~Tab();
+
+    virtual void ApplyConfiguration() = 0;
+    virtual void SetConfiguration() = 0;
+};
+
 constexpr int USE_GLOBAL_INDEX = 0;
 constexpr int USE_GLOBAL_SEPARATOR_INDEX = 1;
 constexpr int USE_GLOBAL_OFFSET = 2;