如何在Qt中绘制半透​​明矩形?

Man*_*agu 9 c++ user-interface qt

我试图在图像上绘制一个半透明的矩形作为亮点.不幸的是,我尝试的任何东西似乎都无法执行我想要的透明效果.相反,我只是得到实心填充的矩形,没有透明度.

这就是我现在正在做的事情:

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));
    ...
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,对我来说,这会绘制一个蓝色矩形,而不是我期望的半透明矩形,因为它给出了QBrush一个alpha值.

我也试过画中间片QImage或者QPixMap玩弄painter.setCompositionMode(...).到目前为止没有运气.

因此我的问题是:我如何说服Qt为我绘制一个半透明的矩形PageView

编辑:如果它是相关的,我在Windows下的Qt 4.8.1下构建它.

Arn*_*nce 15

代码对我有用,只需稍加修改,因为它不会像你一样编译:

painter.fillRect(rect, QBrush(QColor(128, 128, 255, 128)));
Run Code Online (Sandbox Code Playgroud)

注意:

OP在循环中绘制半透​​明矩形,导致相同区域被多次绘制.这将导致附加效果,最终将使该区域看起来与实心填充相同.

  • 看起来你在那里画一个循环.如果您多次在同一点上绘制半透明矩形,它最终将是实心的. (5认同)