4.7 и хотели бы наложить два изображения на qgraphicsview. Изображение сверху должно быть полупрозрачным, чтобы его можно было видеть сквозь него. Изначально оба изображения полностью непрозрачны. Я ожидал, что какая-то функция для установки глобального альфа-значения для каждого пикселя существует, но похоже, что такой функции нет. Ближе всего к нему QPixmap::setAlphaChannel(const QPixmap & alphaChannel), который, однако, помечен как устаревший, начиная с Qt-4.6. Вместо этого руководство ссылается на CompositionModes QPainter, но мне не удается добавить прозрачность к непрозрачному изображению, как я хочу. Может ли кто-нибудь указать мне на рабочий пример или поделиться кодом?
Редактировать: Мне почти жаль, что у меня есть собственный ответ, всего через несколько часов после того, как я задал вопрос. Из этой статьи я понял, что следующий код работает. Мне просто интересно, считается ли это «лучше» (что часто означает «быстрее»), чем изменение альфа-значений по пикселям.
QPainter p;
p.begin(image);
p.setCompositionMode(QPainter::CompositionMode_DestinationIn);
p.fillRect(image->rect(), QColor(0, 0, 0, 120));
p.end();
mpGraphicsView->scene()->addPixmap(QPixmap::fromImage(image->mirrored(false,true),0));