From 37984653d1935eb91bc862e6fc8a890766d6b9b0 Mon Sep 17 00:00:00 2001 From: cristian64 Date: Mon, 17 Nov 2025 22:21:47 +0000 Subject: [PATCH] DolphinQt: Custom style for QGroupBox in Fusion. Fusion is the fallback style that Qt provides in systems that do not offer a OS-specific style. Basically, anything that is not Windows, macOS, or KDE (NOTE: Since #13919, users on these systems can opt in to Fusion too). Its default style for `QGroupBox` is not very conventional, and has been customized to align with more popular designs. | Before | After | | --- | --- | | ![Default QGroupBox style in Fusion](https://github.com/user-attachments/assets/b9f63e21-4282-4a61-a93c-93806ee589a4) | ![Custom QGroupBox style in Fusion](https://github.com/user-attachments/assets/1c8f7f1e-11a2-4712-b1b2-c5e5045b120e) | --- Source/Core/DolphinQt/Settings.cpp | 36 ++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/Source/Core/DolphinQt/Settings.cpp b/Source/Core/DolphinQt/Settings.cpp index f74c6589cc..711efadcd3 100644 --- a/Source/Core/DolphinQt/Settings.cpp +++ b/Source/Core/DolphinQt/Settings.cpp @@ -162,15 +162,13 @@ void Settings::ApplyStyle() { const StyleType style_type = GetStyleType(); - { - const bool use_fusion{style_type == StyleType::FusionLight || - style_type == StyleType::FusionDarkGray || - style_type == StyleType::FusionDark}; - static const QString s_initial_style_name{QApplication::style()->name()}; - const QString style_name{use_fusion ? QStringLiteral("fusion") : s_initial_style_name}; - if (QApplication::style()->name() != style_name) - QApplication::setStyle(style_name); - } + const bool use_fusion{style_type == StyleType::FusionLight || + style_type == StyleType::FusionDarkGray || + style_type == StyleType::FusionDark}; + static const QString s_initial_style_name{QApplication::style()->name()}; + const QString style_name{use_fusion ? QStringLiteral("fusion") : s_initial_style_name}; + if (QApplication::style()->name() != style_name) + QApplication::setStyle(style_name); const QString stylesheet_name = GetUserStyleName(); QString stylesheet_contents; @@ -389,6 +387,26 @@ void Settings::ApplyStyle() stylesheet_contents.append(QStringLiteral("%1").arg(tooltip_stylesheet)); } + // For Fusion, define group box style if not already defined. + if (style_name.compare(QStringLiteral("fusion"), Qt::CaseInsensitive) == 0 && + !stylesheet_contents.contains(QStringLiteral("QGroupBox"))) + { + stylesheet_contents.append(QStringLiteral("QGroupBox {" + " margin-top: 0.6em;" + " padding-top: 0.5em;" + " padding-bottom: 0;" + " padding-left: 1px;" + " padding-right: 1px;" + "} " + "QGroupBox::title {" + " subcontrol-origin: margin;" + " subcontrol-position: top left;" + " left: 0.7em;" + " padding-top: 1px;" + " min-width: 0;" + "}")); + } + qApp->setStyleSheet(stylesheet_contents); }