转至:http://blog.chinaunix.net/uid-25806493-id-3343312.html
档名称 | Qt创建颜色下拉框并改变窗体颜色 |
创建时间 | 2012-9-10 |
修改时间 | 2012-9-10 |
创建人 | Baifx |
简介(收获) | QPalette、QColor、QPixmap、QSize、QIcon、QStringList、QString |
本例是想创建一个颜色下拉框(颜色是自动从QColor中添加的),当选择某个颜色时,改变对应窗体(控件)的颜色(背景色、字体颜色等)。
主要函数:
1、创建颜色下拉框
void fillColorList( QComboBox * combobox )
{
QStringList colorList = QColor::colorNames();
QString 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 );
}
}
2、连接信号和槽函数
connect( pWindowComboBox, SIGNAL( activated( int ) ), this, SLOT( slotWindow() ) );
3、槽函数实现
void Palette::slotWindow()
{
QStringList colorList = QColor::colorNames();
QColor color = QColor( colorList[ pWindowComboBox->currentIndex() ] );
QPalette p = pContentFrame->palette();//每个窗体都包含一个QPalette对象
p.setColor( QPalette::Window, color );
pContentFrame->setPalette( p );
}
注:QPalette的setColor()函数设置单一颜色,而setBrush()可以设置图片;也可以设置不同的颜色主题,通过参数ColorRole。