QPixmap pixmap = QPixmap(":/images/logo.jpg");
QPixmap temp(pixmap.size());
temp.fill(Qt::transparent);
QPainter p(&temp);
p.setCompositionMode(QPainter::CompositionMode_Source);
p.drawPixmap(0, 0, pixmap);
p.setCompositionMode(QPainter::CompositionMode_SourceOver);
p.fillRect(temp.rect(), QColor(255, 255, 255, 70)); //QColor(0, 0, 0, 184)
p.end();
pixmap = temp;
pDisLogo->setPixmap(pixmap);
网上找到了解决方案,主要注意这个参数CompositionMode_SourceOver,另外在执行 p.fillRect(temp.rect(), QColor(255, 255, 255, 70));时,如果背景是全黑就用(255,255,255),如果是全白用(0,0,0),具体根据实际背景颜色。另外a值根据自己实际情况进行调整。