在我的 Qt 应用程序中,我想为用户提供将应用程序的明暗主题设置为:
- 与操作系统主题相同
- Light(忽略操作系统主题)
- 深色(忽略操作系统主题)
对于 1. 我可以使用这个 Objective C 来计算操作系统主题:
bool macIsInDarkTheme()
{
if (__builtin_available(macOS 10.14, *))
{
auto appearance = [NSApp.effectiveAppearance bestMatchFromAppearancesWithNames:
@[ NSAppearanceNameAqua, NSAppearanceNameDarkAqua ]];
return [appearance isEqualToString:NSAppearanceNameDarkAqua];
}
return false;
}
对于 2. 我可以称之为目标 C:
void macSetToLightTheme()
{
if (__builtin_available(macOS 10.14, *))
{
[NSApp setAppearance:[NSAppearance appearanceNamed:NSAppearanceNameAqua]];
}
}
对于 3. 我可以称之为目标 C:
void macSetToDarkTheme()
{
if (__builtin_available(macOS 10.14, *))
{
[NSApp setAppearance:[NSAppearance appearanceNamed:NSAppearanceNameDarkAqua]];
}
}
这一切都有效。如果用户想要从 2. 或 3. 回到 1,就会出现问题。如何将外观设置回从操作系统获取的默认值?我是一名 C++ 程序员,在 Objective C 方面并没有任何经验。