diff --git a/Source/Core/DolphinQt/CMakeLists.txt b/Source/Core/DolphinQt/CMakeLists.txt
index e302287677..dc877da54c 100644
--- a/Source/Core/DolphinQt/CMakeLists.txt
+++ b/Source/Core/DolphinQt/CMakeLists.txt
@@ -280,8 +280,6 @@ add_executable(dolphin-emu
   QtUtils/ElidedButton.h
   QtUtils/FileOpenEventFilter.cpp
   QtUtils/FileOpenEventFilter.h
-  QtUtils/FlowLayout.cpp
-  QtUtils/FlowLayout.h
   QtUtils/ImageConverter.cpp
   QtUtils/ImageConverter.h
   QtUtils/ModalMessageBox.cpp
diff --git a/Source/Core/DolphinQt/DolphinQt.vcxproj b/Source/Core/DolphinQt/DolphinQt.vcxproj
index 79b05b372b..462bfd354b 100644
--- a/Source/Core/DolphinQt/DolphinQt.vcxproj
+++ b/Source/Core/DolphinQt/DolphinQt.vcxproj
@@ -182,7 +182,6 @@
     <ClCompile Include="QtUtils\DoubleClickEventFilter.cpp" />
     <ClCompile Include="QtUtils\ElidedButton.cpp" />
     <ClCompile Include="QtUtils\FileOpenEventFilter.cpp" />
-    <ClCompile Include="QtUtils\FlowLayout.cpp" />
     <ClCompile Include="QtUtils\ImageConverter.cpp" />
     <ClCompile Include="QtUtils\ModalMessageBox.cpp" />
     <ClCompile Include="QtUtils\NonDefaultQPushButton.cpp" />
@@ -238,7 +237,6 @@
     <ClInclude Include="GBAHost.h" />
     <ClInclude Include="QtUtils\ActionHelper.h" />
     <ClInclude Include="QtUtils\DolphinFileDialog.h" />
-    <ClInclude Include="QtUtils\FlowLayout.h" />
     <ClInclude Include="QtUtils\ImageConverter.h" />
     <ClInclude Include="QtUtils\ModalMessageBox.h" />
     <ClInclude Include="QtUtils\NonDefaultQPushButton.h" />
diff --git a/Source/Core/DolphinQt/QtUtils/FlowLayout.cpp b/Source/Core/DolphinQt/QtUtils/FlowLayout.cpp
deleted file mode 100644
index b2c4eb75d5..0000000000
--- a/Source/Core/DolphinQt/QtUtils/FlowLayout.cpp
+++ /dev/null
@@ -1,176 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** SPDX-License-Identifier: BSD-3-Clause
-**
-****************************************************************************/
-
-#include "DolphinQt/QtUtils/FlowLayout.h"
-
-#include <QtWidgets>
-
-FlowLayout::FlowLayout(QWidget* parent, int margin, int h_spacing, int v_spacing)
-    : QLayout(parent), m_h_space(h_spacing), m_v_space(v_spacing)
-{
-  setContentsMargins(margin, margin, margin, margin);
-}
-
-FlowLayout::FlowLayout(int margin, int h_spacing, int v_spacing)
-    : m_h_space(h_spacing), m_v_space(v_spacing)
-{
-  setContentsMargins(margin, margin, margin, margin);
-}
-
-FlowLayout::~FlowLayout()
-{
-  while (QLayoutItem* item = takeAt(0))
-    delete item;
-}
-
-void FlowLayout::addItem(QLayoutItem* item)
-{
-  m_item_list.append(item);
-}
-
-int FlowLayout::horizontalSpacing() const
-{
-  if (m_h_space >= 0)
-  {
-    return m_h_space;
-  }
-  else
-  {
-    return smartSpacing(QStyle::PM_LayoutHorizontalSpacing);
-  }
-}
-
-int FlowLayout::verticalSpacing() const
-{
-  if (m_v_space >= 0)
-  {
-    return m_v_space;
-  }
-  else
-  {
-    return smartSpacing(QStyle::PM_LayoutVerticalSpacing);
-  }
-}
-
-int FlowLayout::count() const
-{
-  return m_item_list.size();
-}
-
-QLayoutItem* FlowLayout::itemAt(int index) const
-{
-  return m_item_list.value(index);
-}
-
-QLayoutItem* FlowLayout::takeAt(int index)
-{
-  if (index >= 0 && index < m_item_list.size())
-    return m_item_list.takeAt(index);
-  else
-    return nullptr;
-}
-
-Qt::Orientations FlowLayout::expandingDirections() const
-{
-  return {};
-}
-
-bool FlowLayout::hasHeightForWidth() const
-{
-  return true;
-}
-
-int FlowLayout::heightForWidth(int width) const
-{
-  int height = doLayout(QRect(0, 0, width, 0), true);
-  return height;
-}
-
-void FlowLayout::setGeometry(const QRect& rect)
-{
-  QLayout::setGeometry(rect);
-  doLayout(rect, false);
-}
-
-QSize FlowLayout::sizeHint() const
-{
-  return minimumSize();
-}
-
-QSize FlowLayout::minimumSize() const
-{
-  QSize size;
-  for (const auto& item : m_item_list)
-    size = size.expandedTo(item->minimumSize());
-
-  // Any direction's margin works, as they all set the same within the constructor.
-  int margin = 0;
-  getContentsMargins(&margin, nullptr, nullptr, nullptr);
-
-  size += QSize(2 * margin, 2 * margin);
-  return size;
-}
-
-int FlowLayout::doLayout(const QRect& rect, bool testOnly) const
-{
-  int left, top, right, bottom;
-  getContentsMargins(&left, &top, &right, &bottom);
-  QRect effectiveRect = rect.adjusted(+left, +top, -right, -bottom);
-  int x = effectiveRect.x();
-  int y = effectiveRect.y();
-  int lineHeight = 0;
-
-  for (const auto& item : m_item_list)
-  {
-    QWidget* wid = item->widget();
-    int spaceX = horizontalSpacing();
-    if (spaceX == -1)
-      spaceX = wid->style()->layoutSpacing(QSizePolicy::PushButton, QSizePolicy::PushButton,
-                                           Qt::Horizontal);
-    int spaceY = verticalSpacing();
-    if (spaceY == -1)
-      spaceY = wid->style()->layoutSpacing(QSizePolicy::PushButton, QSizePolicy::PushButton,
-                                           Qt::Vertical);
-    int nextX = x + item->sizeHint().width() + spaceX;
-    if (nextX - spaceX > effectiveRect.right() && lineHeight > 0)
-    {
-      x = effectiveRect.x();
-      y = y + lineHeight + spaceY;
-      nextX = x + item->sizeHint().width() + spaceX;
-      lineHeight = 0;
-    }
-
-    if (!testOnly)
-      item->setGeometry(QRect(QPoint(x, y), item->sizeHint()));
-
-    x = nextX;
-    lineHeight = qMax(lineHeight, item->sizeHint().height());
-  }
-  return y + lineHeight - rect.y() + bottom;
-}
-
-int FlowLayout::smartSpacing(QStyle::PixelMetric pm) const
-{
-  QObject* parent = this->parent();
-  if (!parent)
-  {
-    return -1;
-  }
-  else if (parent->isWidgetType())
-  {
-    QWidget* pw = static_cast<QWidget*>(parent);
-    return pw->style()->pixelMetric(pm, nullptr, pw);
-  }
-  else
-  {
-    return static_cast<QLayout*>(parent)->spacing();
-  }
-}
diff --git a/Source/Core/DolphinQt/QtUtils/FlowLayout.h b/Source/Core/DolphinQt/QtUtils/FlowLayout.h
deleted file mode 100644
index 4f145e7e4d..0000000000
--- a/Source/Core/DolphinQt/QtUtils/FlowLayout.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** SPDX-License-Identifier: BSD-3-Clause
-**
-****************************************************************************/
-
-#pragma once
-
-#include <QLayout>
-#include <QRect>
-#include <QStyle>
-
-class FlowLayout : public QLayout
-{
-public:
-  explicit FlowLayout(QWidget* parent, int margin = -1, int h_spacing = -1, int v_spacing = -1);
-  explicit FlowLayout(int margin = -1, int h_spacing = -1, int v_spacing = -1);
-  ~FlowLayout();
-
-  void addItem(QLayoutItem* item) override;
-  int horizontalSpacing() const;
-  int verticalSpacing() const;
-  Qt::Orientations expandingDirections() const override;
-  bool hasHeightForWidth() const override;
-  int heightForWidth(int) const override;
-  int count() const override;
-  QLayoutItem* itemAt(int index) const override;
-  QSize minimumSize() const override;
-  void setGeometry(const QRect& rect) override;
-  QSize sizeHint() const override;
-  QLayoutItem* takeAt(int index) override;
-
-private:
-  int doLayout(const QRect& rect, bool testOnly) const;
-  int smartSpacing(QStyle::PixelMetric pm) const;
-
-  QList<QLayoutItem*> m_item_list;
-  int m_h_space;
-  int m_v_space;
-};