【发布时间】:2021-06-17 03:05:42
【问题描述】:
在我的 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. 我可以称之为 Objective C:
void macSetToLightTheme()
{
if (__builtin_available(macOS 10.14, *))
{
[NSApp setAppearance:[NSAppearance appearanceNamed:NSAppearanceNameAqua]];
}
}
对于 3. 我可以称之为 Objective C:
void macSetToDarkTheme()
{
if (__builtin_available(macOS 10.14, *))
{
[NSApp setAppearance:[NSAppearance appearanceNamed:NSAppearanceNameDarkAqua]];
}
}
这一切都有效。如果用户想从 2. 或 3. 回到 1,就会出现问题。如何将外观设置回从操作系统获取的默认值?我是一名 C++ 程序员,对 Objective C 没有任何经验。
【问题讨论】:
标签: objective-c macos qt darkmode