我有一个非常小的 Qt 应用程序,它使用标签来显示 jpeg 图像,而无需先将其放入窗口中。 (我得到了很多帮助使用 QtGui 显示 QImage)
现在我想更改此 jpeg 的 Alpha 通道以使图像部分透明。我尝试过以下操作,但没有任何运气
int main (int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel label (0, Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
label.resize(1280,720);
label.setPixmap(QPixmap("test.jpg"));
label.setScaledContents(true);
// This line should set the alpha transparency to 50%
label.setStyleSheet("background-color: rgba(255,255,255,50);");
label.show();
return app.exec();
}
样式表似乎根本不影响标签。我尝试过更改其他 RGB 值(例如全 0)并在背景颜色和颜色之间交替,但图像始终相同。
更新:
感谢 eyllanesc,以下内容现在对我有用:
int main (int argc, char *argv[])
{
QApplication app(argc, argv);
QPixmap input ("test.jpg");
QImage image(input.size(), QImage::Format_ARGB32_Premultiplied);
image.fill(Qt::transparent);
QPainter p(&image);
p.setOpacity(0.5);
p.drawPixmap(0,0,input);
p.end();
QPixmap output = QPixmap::fromImage(image);
QLabel label (0, Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
label.setStyleSheet("background-color: rgba(255,255,255,50);");
label.resize(1280,720);
label.setPixmap(output);
label.setScaledContents(true);
label.show();
return app.exec();
}