Wie erstelle ich ein semi-transparentes Rechteck in Qt?

Ich versuche zu zeichnen, semi-transparent Rechteck auf einem Bild zu handeln, als ein highlight. Leider nichts, was ich versuchen scheint in der Lage zu führen Sie die Transparenz-Effekt den ich haben will. Stattdessen bekomme ich nur, Unifarben gefüllten Rechtecke, keine Transparenz.

Hier ist, was ich gerade mache:

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));
    ...
}

Leider, für mich, dies zieht eine solide Blaue Rechteck, anstatt das semi-transparente erwarte ich aufgrund der Angabe der QBrush einen alpha-Wert.

Ich habe auch versucht die Zeichnung zu einem mittleren QImage oder QPixMap, um das Spiel mit painter.setCompositionMode(...). Kein Glück so weit.

Daher meine Frage: Wie kann ich überzeugen, Qt zeichnen ein semi-transparentes Rechteck zu meinem PageView?

BEARBEITEN: Wenn es relevant ist, ich Baue diese unter Qt 4.8.1 auf Windows.

  • Es gibt keine QBrush(r, g, b, a) Konstruktor in der Qt-Doku. Meinst du QColor?
  • Das habe ich, ja. Mein Fehler.
  • Voll PageView::paintEvent auf pastebin.com/Dj9dDd0c. Aber ich glaube nicht, dass es etwas Interessantes, was ich weggelassen.
InformationsquelleAutor Managu | 2012-06-18
Schreibe einen Kommentar