具有多种颜色背景的 QPalette

Posted

技术标签:

【中文标题】具有多种颜色背景的 QPalette【英文标题】:QPalette with multiple color background 【发布时间】:2014-03-28 12:04:44 【问题描述】:

我知道我们可以使用 QPalette 来设置 QLabel 的背景。但是我可以用 QPalette 绘制多色背景吗?例如,上半部分为黑色,下半部分为蓝色。 我找不到 setRect() 函数 QPalette。或者我应该使用其他类?还是我必须用画家画背景?

【问题讨论】:

也许你可以继承 QLabel 并覆盖 paintEvent() 函数? @vahancho 你好!谢谢你的评论。我在paintevent() 中添加了一个drawRect。我想我误解了 QPalette 的使用。 在调色板中,您可以设置QBrushQPixmap,将用作图块。如果图像足够大,您可以达到预期的效果。自定义油漆可让您更好地控制最终结果。 【参考方案1】:

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);

【讨论】:

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

以上是关于具有多种颜色背景的 QPalette的主要内容,如果未能解决你的问题,请参考以下文章

具有多种颜色背景的 QPalette

iOS:背景颜色——UITableView 和附件具有相同的背景颜色

具有背景颜色的按钮的材质效果

具有颜色和背景图像的按钮

使用具有 100% 高度的颜色叠加层的背景视频

选择具有特定背景颜色的元素