如何在Qt6中获取各类部件的主题颜色?
如何在Qt6中优雅获取各类部件的主题颜色
我正在尝试获取Qt6中各类部件的主题颜色,已经调用了QApplication.style(),但不清楚怎么从返回的QCommonStyle对象中拿到需要的颜色——比如QLabel的文本颜色、QListView的背景颜色等。目前我只能通过创建临时对象来获取目标颜色,这个办法不够优雅。
解决方案
后来找到更合适的实现方式:通过QPalette访问主题颜色,根据部件的状态(激活/选中等)匹配对应的颜色角色即可,无需创建临时部件:
if option.state & QStyle.State_Active: if option.state & QStyle.State_Selected: textColor = QPalette.HighlightedText brightTextColor = QPalette.HighlightedText else: textColor = QPalette.WindowText brightTextColor = QPalette.BrightText else: textColor = QPalette.WindowText brightTextColor = QPalette.BrightText
QPalette预定义了一系列标准颜色角色,对应不同场景下的主题色,直接调用就能获取系统或当前主题配置的颜色值,比临时对象的方法更高效、优雅。
内容的提问来源于stack exchange,提问作者Martin Bammer
相关产品推荐
相关产品推荐

