现在在 Qt 6.8 中
ColorScheme
已变得可写,我想实现一个暗/亮开关。是否可以通过编程方式找出样式是否具有可切换的颜色方案?
如果这是不可能的,对样式名称进行硬编码可能是最好的选择。 Linux 和 MAC 是否有不可切换的样式?我只能测试Windows。
在 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()
样式 = QStyleFactory.keys() 对于样式中的样式: if has_dark_mode(style): print(f"{style} 支持深色模式。") 别的: print(f"{style} 不支持深色模式。")
此代码片段检查标准调色板中窗口颜色的亮度。如果该值低于某个阈值,则表明该样式可能支持深色模式。
关于硬编码,虽然对于“windowsvista”之类的样式可能是必要的,但 Linux 和 macOS 上的大多数样式确实支持可切换的配色方案。但是,建议在这些平台上进行测试以进行确认。