如何判断某个样式是否有深色模式

问题描述 投票:0回答:1

现在在 Qt 6.8 中

ColorScheme
已变得可写,我想实现一个暗/亮开关。
我的应用程序还允许用户选择样式,并且至少有一种样式没有深色模式(windowsvista)。因此,当样式没有深色模式时,我想禁用深色/浅色开关。

是否可以通过编程方式找出样式是否具有可切换的颜色方案?
如果这是不可能的,对样式名称进行硬编码可能是最好的选择。 Linux 和 MAC 是否有不可切换的样式?我只能测试Windows。

pyqt6 color-scheme qt6 qstyle
1个回答
0
投票

在 Qt 6.8 中,您可以通过检查 QStyle 类及其关联的 QPalette 来确定样式是否支持可切换的配色方案。虽然没有直接的方法来查询样式是否支持暗模式,但您可以通过检查 QPalette 中正在使用的样式来推断它。

这里有一个简单的方法来检查样式是否可以切换到深色模式:

从 PyQt6.QtWidgets 导入 QApplication、QStyleFactory 从 PyQt6.QtGui 导入 QPalette

def has_dark_mode(style_name): 样式 = QStyleFactory.create(style_name) 调色板= style.standardPalette()

检查调色板是否有暗模式变体 return Palette.color(QPalette.ColorRole.Window).value() < 128 # Example threshold

使用示例 app = QApplication([])

样式 = QStyleFactory.keys() 对于样式中的样式: if has_dark_mode(style): print(f"{style} 支持深色模式。") 别的: print(f"{style} 不支持深色模式。")

此代码片段检查标准调色板中窗口颜色的亮度。如果该值低于某个阈值,则表明该样式可能支持深色模式。

关于硬编码,虽然对于“windowsvista”之类的样式可能是必要的,但 Linux 和 macOS 上的大多数样式确实支持可切换的配色方案。但是,建议在这些平台上进行测试以进行确认。

© www.soinside.com 2019 - 2024. All rights reserved.