Sto provando a disegnare un rettangolo semitrasparente sopra un'immagine per fungere da evidenziazione. Sfortunatamente, niente di quello che provo sembra essere in grado di eseguire l'effetto di trasparenza che voglio. Invece ho solo rettangoli pieni, senza trasparenza.Come si disegna un rettangolo semitrasparente in Qt?
Ecco quello che sto facendo in questo momento:
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));
...
}
Purtroppo, per me, questo disegna un solida rettangolo blu, al posto di quella semi-trasparente Mi aspetto che a causa dando il QBrush
un alfa valore.
Ho anche provato a disegnare su un intermedio QImage
o QPixMap
, giocando con painter.setCompositionMode(...)
. Nessuna fortuna finora.
Quindi la mia domanda: come posso convincere Qt a disegnare un rettangolo semitrasparente al mio PageView
?
EDIT: Se è rilevante, sto costruendo questo sotto Qt 4.8.1 su Windows.
Non esiste un costruttore 'QBrush (r, g, b, a)' nel [Qt docs] (http://doc-snapshot.qt-project.org/4.8/qbrush.html). Intendevi 'QColor'? –
Sì, sì. Errore mio. – Managu
Completo 'PageView :: paintEvent' su http://pastebin.com/Dj9dDd0c. Anche se non penso ci sia nulla di interessante in ciò che ho omesso. – Managu