QPalette

来源:互联网 发布:cf烈龙加成斯太尔算法 编辑:程序博客网 时间:2024/05/17 07:26

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);//设置下拉列表框的尺寸为内容尺寸。}
原创粉丝点击