QPalette简介
在QT中我们如何改变某个控件的颜色外观呢?比如改变背景、文字颜色等。QT提供了调色板类QPalette专门用于管理对话框的外观显示。每个控件或者窗体都包含一个QPalette对象,在显示时会根据其QPalette对象中对各个部分各状态下的颜色的描述进行绘制。
QPalette类有两个基本概念:一个是ColorGroup,另一个是ColorRole。详细可参见QT帮助手册。
1.ColorGroup指一下三种不同的状态:
QPalette::Active: 获得焦点的状态
QPalette::Inactive: 未获得焦点的状态
QPalette::Disabled:不可用状态
Inactive和Active通常情况下颜色显示一致,也可根据情况设置。
2.ColorRole 定义当前gui中使用的不同控件颜色背景。
代码示例:
QPalette pal = qApp->palette();
pal.setColor(QPalette::Window, QColor(111, 111, 1));// 设置窗口背景
//pal.setBrush(QPalette::Window, QColor(111, 111, 1));同上,setBrush和setColor效果相同
pal.setColor(QPalette::WindowText, QRgb(0x404044));
pal.setColor(QPalette::Base, QColor(0, 0, 1)); //改变ComboBox按钮下拉颜色和编辑器颜色
pal.setColor(QPalette::Text, QColor(111, 111, 111));//改变文本颜色
pal.setColor(QPalette::Button,QColor(1,255,111)); //无法改变整个按钮的背景,还需要AutoFillBackground属性设置为true
pal.setColor(QPalette::ButtonText, QColor(255, 255, 0));//按钮文本颜色
qApp->setPalette(pal);
效果:
qt 编辑器可以查看效果 如图: