2014-03-28 58 views
2

我知道我们可以使用QPalette为QLabel设置背景。但是,我可以用QPalette绘制多色背景吗?例如,黑色的一半以及蓝色的一半以下。 我找不到setRect()函数QPalette。或者我应该使用其他课程?还是我必须画画家的背景?QPalette具有多种颜色背景

+1

也许你可以子类QLabel和覆盖的paintEvent()函数? – vahancho

+0

@vahancho嘿,你再次!谢谢你的评论。我在paintevent()中添加了一个drawRect。我想我误解了QPalette的使用。 –

+1

在调色板中,您可以用'QPixmap'设置一个'QBrush',它将用作拼贴。如果图像足够大,可以达到预期的效果。定制油漆可以让您更好地控制最终结果。 –

回答

3

documentation for QGradient类状态: -

的QGradient类组合使用QBrush指定渐变填充

所以,你可以通过创建一个梯度设置,到QBrush启动

QLinearGradient linearGrad(QPointF(100, 100), QPointF(100, 200)); 
linearGrad.setColorAt(0, Qt::black); 
linearGrad.setColorAt(0.5, Qt::blue); 

您可以尝试在不同的站点设置不同的颜色,范围从0.0到1.0

使用梯度创建刷...

QBrush brush(linearGrad); 

documentation for QPalette状态: -

颜色和画笔可以为特定角色中的任何一个调色板的颜色组,为setColor的设置()和setBrush()。

因此,使用QPalette的setBrush功能,设置与梯度创建的画笔: -

QPalette palette; 
palette->setBrush(QPalette::Window, brush); 
+0

感谢您的回答。 QGradient比我预期的更丰富。 –