QPalette类专门用于管理对话框的外观显示。如背景,文字颜色等。
每个窗体或控件都包含一个QPalette对象。在显示时,按照它的QPalette对象中对各部分各状态下的颜色的描述进行绘制。
QPalette类主要有两个基本概念:ColorGroup,ColorRole。
ColorGroup是指控件的三种状态:
QPalette::Active 获得焦点状态
QPalette::Inactive 未获得焦点状态
QPalette::Disable 不可用状态
ColorRole指的是颜色主题:
QPalette::Window指背景色
QPalette::WindowText指前景色
QPalette类中使用最多的成员函数是setColor()函数
void Palette::setColor(ColorGroup group,ColorRole role,const QColor &color);
对主题颜色设置的同时还区分状态,即对某个主题在某个状态下的颜色进行设置:
void Palette::setColor(ColorRole role,const QColor &color);
QPalette类同时还设置了setBrush()函数,通过画刷的设置对显示进行更改,这样就有可能使用图片而不仅是单一的颜色对主题进行填充。
QPalette设置背景色的方法:
setAutoFillBackground(true);//设置窗体自动填充背景。
如果并不使用单一的颜色填充背景,则可将setColor()函数替换为setBrush对背景进行设置。
QComboBox *windowComboBOx=new QComboBOx;
fillColorList(QComboBOx*comboBox);
connect(windowComboBox,SIGNAL(activated(int)),this,SLOT(ShowWindow()));
void ShowWindow()
{
QStringList colorList=QColor::colorNames();//返回Qt知道的所有颜色的名字。
QColor color=QCOlor(colorList[windowComboBox->currentIndex()]);
QPalette p=contentFrame->palette();//contentFrame是QFrame对象。
p.setColor(QPalette::Window,color);
contentFrame->setPalette(p);
contentFrame->uodate();
}
void fillColorList(QComboBox *comboBox)
{
QStringList colorList=QColor::colorNames();
QStirng color;
foreach(color,colorList)
{
QPixmap pix(QSize(70,20));
pix.fill(QColor(color));
comboBox->addItem(QIcon(pix),NUll);//名称设置为空
comboBox->setIconSize(QSize(70,20));
comboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents);//设置下拉列表框的尺寸为内容尺寸。
}