1111#include < QtCore/QFile>
1212#include < QtGui/QPalette>
1313#include < QtGui/QPixmapCache>
14+ #include < QtGui/QStyleHints>
1415#include < QtWidgets/QApplication>
1516#include < QtWidgets/QStyle>
1617#include < QtWidgets/QStyleFactory>
1718
1819namespace QtHost
1920{
2021 static void SetStyleFromSettings ();
22+ static void SetColorScheme (Qt::ColorScheme colour_scheme);
2123} // namespace QtHost
2224
2325static QString s_unthemed_style_name;
@@ -54,8 +56,12 @@ void QtHost::UpdateApplicationTheme()
5456
5557bool QtHost::IsDarkApplicationTheme ()
5658{
59+ #if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0)
60+ return qApp->styleHints ()->colorScheme () == Qt::ColorScheme::Dark;
61+ #else
5762 QPalette palette = qApp->palette ();
58- return (palette.windowText ().color ().value () > palette.window ().color ().value ());
63+ return palette.windowText ().color ().value () > palette.window ().color ().value ();
64+ #endif
5965}
6066
6167void QtHost::SetIconThemeFromStyle ()
@@ -73,13 +79,15 @@ void QtHost::SetStyleFromSettings()
7379 qApp->setStyle (QStyleFactory::create (" Fusion" ));
7480 qApp->setPalette (s_unthemed_palette);
7581 qApp->setStyleSheet (QString ());
82+ SetColorScheme (Qt::ColorScheme::Unknown);
7683 }
7784#ifdef _WIN32
7885 else if (theme == " windowsvista" )
7986 {
8087 qApp->setStyle (QStyleFactory::create (" windowsvista" ));
8188 qApp->setPalette (s_unthemed_palette);
8289 qApp->setStyleSheet (QString ());
90+ SetColorScheme (Qt::ColorScheme::Unknown);
8391 }
8492#endif
8593 else if (theme == " darkfusion" )
@@ -116,6 +124,7 @@ void QtHost::SetStyleFromSettings()
116124
117125 qApp->setPalette (darkPalette);
118126 qApp->setStyleSheet (QString ());
127+ SetColorScheme (Qt::ColorScheme::Dark);
119128 }
120129 else if (theme == " darkfusionblue" )
121130 {
@@ -151,6 +160,7 @@ void QtHost::SetStyleFromSettings()
151160
152161 qApp->setPalette (darkBluePalette);
153162 qApp->setStyleSheet (QString ());
163+ SetColorScheme (Qt::ColorScheme::Dark);
154164 }
155165 else if (theme == " GreyMatter" )
156166 {
@@ -187,6 +197,7 @@ void QtHost::SetStyleFromSettings()
187197
188198 qApp->setPalette (greyMatterPalette);
189199 qApp->setStyleSheet (QString ());
200+ SetColorScheme (Qt::ColorScheme::Dark);
190201 }
191202 else if (theme == " UntouchedLagoon" )
192203 {
@@ -222,6 +233,7 @@ void QtHost::SetStyleFromSettings()
222233
223234 qApp->setPalette (untouchedLagoonPalette);
224235 qApp->setStyleSheet (QString ());
236+ SetColorScheme (Qt::ColorScheme::Light);
225237 }
226238 else if (theme == " BabyPastel" )
227239 {
@@ -259,6 +271,7 @@ void QtHost::SetStyleFromSettings()
259271
260272 qApp->setPalette (babyPastelPalette);
261273 qApp->setStyleSheet (QString ());
274+ SetColorScheme (Qt::ColorScheme::Light);
262275 }
263276 else if (theme == " PizzaBrown" )
264277 {
@@ -296,6 +309,7 @@ void QtHost::SetStyleFromSettings()
296309
297310 qApp->setPalette (pizzaPalette);
298311 qApp->setStyleSheet (QString ());
312+ SetColorScheme (Qt::ColorScheme::Light);
299313 }
300314 else if (theme == " PCSX2Blue" )
301315 {
@@ -331,6 +345,7 @@ void QtHost::SetStyleFromSettings()
331345
332346 qApp->setPalette (pcsx2BluePalette);
333347 qApp->setStyleSheet (QString ());
348+ SetColorScheme (Qt::ColorScheme::Light);
334349 }
335350 else if (theme == " ScarletDevilRed" )
336351 {
@@ -364,6 +379,7 @@ void QtHost::SetStyleFromSettings()
364379
365380 qApp->setPalette (scarletDevilPalette);
366381 qApp->setStyleSheet (QString ());
382+ SetColorScheme (Qt::ColorScheme::Dark);
367383 }
368384 else if (theme == " VioletAngelPurple" )
369385 {
@@ -397,6 +413,7 @@ void QtHost::SetStyleFromSettings()
397413
398414 qApp->setPalette (violetAngelPalette);
399415 qApp->setStyleSheet (QString ());
416+ SetColorScheme (Qt::ColorScheme::Dark);
400417 }
401418 else if (theme == " CobaltSky" )
402419 {
@@ -434,6 +451,7 @@ void QtHost::SetStyleFromSettings()
434451
435452 qApp->setPalette (cobaltSkyPalette);
436453 qApp->setStyleSheet (QString ());
454+ SetColorScheme (Qt::ColorScheme::Dark);
437455 }
438456 else if (theme == " AMOLED" )
439457 {
@@ -470,6 +488,7 @@ void QtHost::SetStyleFromSettings()
470488
471489 qApp->setPalette (AMOLEDPalette);
472490 qApp->setStyleSheet (QString ());
491+ SetColorScheme (Qt::ColorScheme::Dark);
473492 }
474493 else if (theme == " Ruby" )
475494 {
@@ -503,6 +522,7 @@ void QtHost::SetStyleFromSettings()
503522
504523 qApp->setPalette (rubyPalette);
505524 qApp->setStyleSheet (QString ());
525+ SetColorScheme (Qt::ColorScheme::Dark);
506526 }
507527 else if (theme == " Sapphire" )
508528 {
@@ -536,6 +556,7 @@ void QtHost::SetStyleFromSettings()
536556
537557 qApp->setPalette (sapphirePalette);
538558 qApp->setStyleSheet (QString ());
559+ SetColorScheme (Qt::ColorScheme::Dark);
539560 }
540561 else if (theme == " Emerald" )
541562 {
@@ -569,6 +590,7 @@ void QtHost::SetStyleFromSettings()
569590
570591 qApp->setPalette (emeraldPalette);
571592 qApp->setStyleSheet (QString ());
593+ SetColorScheme (Qt::ColorScheme::Dark);
572594 }
573595 else if (theme == " Custom" )
574596 {
@@ -587,11 +609,21 @@ void QtHost::SetStyleFromSettings()
587609 {
588610 qApp->setStyle (QStyleFactory::create (" Fusion" ));
589611 }
612+
613+ SetColorScheme (Qt::ColorScheme::Unknown);
590614 }
591615 else
592616 {
593617 qApp->setStyle (s_unthemed_style_name);
594618 qApp->setPalette (s_unthemed_palette);
595619 qApp->setStyleSheet (QString ());
620+ SetColorScheme (Qt::ColorScheme::Unknown);
596621 }
597622}
623+
624+ static void QtHost::SetColorScheme (Qt::ColorScheme colour_scheme)
625+ {
626+ #if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0)
627+ qApp->styleHints ()->setColorScheme (colour_scheme);
628+ #endif
629+ }
0 commit comments