Beim Rendern von QWidget nach QImage geht der Alphakanal verloren

Ich habe ein einfaches Qt-Widget. Es ist einQLabel mit einem einfachen CSS-Stil angewendet. Der wichtige Teil des Stils ist ein runder Rand:

QString css("border-style: solid;"
       "border-width: 3px;"
       "border-radius: 7px;");

Es wird auf dem Bildschirm gut angezeigt. Die Ecken des Etiketts hinter dem Rand sind mit transparenter Farbe ausgefüllt, sodass es auf jedem Hintergrund gut aussieht. So sieht es aus, wenn es über einem anderen Widget angezeigt wird (das eine dunkelgraue Hintergrundfarbe hat):

Nun, wenn ich es so in QImage rendere

QImage bitmap(label->size(), QImage::Format_ARGB32);
QPainter painter(&bitmap);
balloon->render(&painter);
bitmap.save("C:/1.png");

Ich erhalte Folgendes (Bild im Bildeditor geöffnet, um ein Problem klar zu veranschaulichen):

Beachten Sie, dass die Transparenz um die Ecken nicht erhalten bleibt. Was ist das Problem? Wie kann ich es richtig rendern?

P. S. Ich habe dies versucht, um zu testen, ob QImage Alphakanäle speichern kann und ob mein Bildeditor dies korrekt anzeigt:

bitmap.fill(QColor::fromRgba(qRgba(0, 0, 0, 0)));
bitmap.save("C:/1.png");

Es funktioniert gut, ich kann Transparenz als Schachbrettmuster sehen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage