Estoy tratando de dibujar un rectángulo semitransparente sobre una imagen para resaltar. Lamentablemente, nada de lo que intento parece ser capaz de realizar el efecto de transparencia que quiero. En cambio, obtengo rectángulos rellenos sólidos, sin transparencia.¿Cómo se dibuja un rectángulo semitransparente en Qt?
Aquí es lo que estoy haciendo ahora:
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));
...
}
Por desgracia, para mí, esto dibuja un rectángulo azul sólida, en lugar de la semi-transparente que espero a que dan a la QBrush
un alfa valor.
También traté de dibujar en un intermedio QImage
o QPixMap
, jugando con painter.setCompositionMode(...)
. Sin suerte hasta ahora.
Así que mi pregunta: ¿Cómo puedo convencer a Qt para dibujar un rectángulo semitransparente en mi PageView
?
EDIT: Si es relevante, estoy compilando esto en Qt 4.8.1 en Windows.
No existe el constructor 'QBrush (r, g, b, a)' en [Qt docs] (http://doc-snapshot.qt-project.org/4.8/qbrush.html). ¿Querías decir 'QColor'? –
Sí, sí. Mi error. – Managu
Completo 'PageView :: paintEvent' en http://pastebin.com/Dj9dDd0c. Aunque no creo que haya nada interesante en lo que omité. – Managu