【发布时间】:2012-06-20 00:27:44
【问题描述】:
我正在尝试在图像顶部绘制一个半透明的矩形以作为突出显示。不幸的是,我尝试的任何东西似乎都无法执行我想要的透明效果。相反,我只是得到实心填充的矩形,没有透明度。
这是我现在正在做的事情:
void PageView::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QImage img=...;
painter.drawImage(0, 0, img);
...
// draw a light blue, transparent rectangle to highlight
QRect rect=...;
painter.fillRect(rect, QColor(128, 128, 255, 128));
...
}
不幸的是,对我来说,这会绘制一个实心蓝色矩形,而不是我期望的半透明矩形,因为给QBrush 一个alpha 值。
我也尝试过画到中间的QImage 或QPixMap,玩弄painter.setCompositionMode(...)。到目前为止没有运气。
因此我的问题是:如何说服 Qt 为我的 PageView 绘制一个半透明矩形?
编辑:如果相关,我将在 Windows 上的 Qt 4.8.1 下构建它。
【问题讨论】:
-
Qt docs 中没有
QBrush(r, g, b, a)构造函数。你的意思是QColor? -
我做到了,是的。我的错。
-
完整的
PageView::paintEventpastebin.com/Dj9dDd0c。虽然我不认为我遗漏的内容有什么有趣的地方。
标签: c++ qt user-interface