Próbuję narysować półprzezroczysty prostokąt na górze obrazu, aby działał jako podświetlenie. Niestety, nic, co próbuję, nie wydaje się być w stanie wykonać pożądanego efektu przezroczystości. Zamiast tego dostaję tylko wypełnione prostokąty bez przezroczystości.Jak narysować półprzezroczysty prostokąt w Qt?
Oto co robię teraz:
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));
...
}
Niestety, dla mnie, to rysuje stałe niebieski prostokąt, zamiast półprzezroczystego jednego Spodziewam powodu dając QBrush
alfa wartość.
Próbowałem także rysować do pośredniego QImage
lub QPixMap
, bawiąc się z painter.setCompositionMode(...)
. Do tej pory nie było szczęścia.
Moje pytanie: jak przekonać Qt do narysowania półprzezroczystego prostokąta do mojego PageView
?
EDIT: Jeśli jest to istotne, buduję to pod Qt 4.8.1 na Windowsie.
Nie ma konstruktora 'QBrush (r, g, b, a)' w [Qt docs] (http://doc-snapshot.qt-project.org/4.8/qbrush.html). Czy chodziło Ci o 'QColor'? –
Tak, tak. Mój błąd. – Managu
Pełna 'PageView :: paintEvent' na http://pastebin.com/Dj9dDd0c. Chociaż nie sądzę, że w tym, co pominąłem, jest coś interesującego. – Managu