通过QWidget的setPalette可以设置基本的调色板,比如背景色
QPalette::ColorGroup指定了基本组件的状态 比如禁用,正常 激活等不同状态
QPalette::ColorRole指定了基本的控件 Window指后端背景颜色 WindowText指的前端颜色。
两者组合起来就是某个状态下使用哪种颜色
setPalette将指定的Palette和原来的旧的数据组合起来。也就是参数Palette不用将所有的状态和颜色都指定。指定某一种就行。
对于指定ColorRole为Window刷新背景色。需要调用setAutoFillBackground(true)来明确自动刷新。使得QWidget在调用paintEvent之前将背景刷为指定的颜色
比如要设置某个WIdget的背景色
QPalette palette;
//没有指定ColorGroup表示将所有的Group都指定为这个颜色
palette.setBrush(QPalette::Window,QBrush(Qt::white));
//设置组合
Widget->setPalette(palette);
//这一句很重要。在调用paintEvent之前自动刷新背景色。(测试在win平台上除了子widget需要,否则会无效,可能是平台相关的,但是文档里面说了设置QWindow role的时候就设置为true,还是按照文档来)
Widget->setAutoFillBackground(true);