Normalen widget-Background zeichnen

Alles rund um die Programmierung mit Qt
Antworten
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Normalen widget-Background zeichnen

Beitrag von franzf »

Hi,

Ich schreib mir grad ein Overlay-Widget, welches sich halbtransparent über ein anderes legt. Klappt prinzipiell schon - nur möchte ich statt nem Einfarbigen Rect jetzt den Hintergrund eines QWidget malen lassen.
Und das klappt nur unter bestimmten Voraussetzungen, und auch nur mit Bespin... Alle anderen Styles malen gar keinen Hintergrund, so dass das überlagerte Fenster in seiner ganzen Pracht zu erkennen ist, und somit Texte in nem Label auf dem Overlay nicht mehr ordentlich lesbar sind.

Folgendes paintEvent hab ich momentan:

Code: Alles auswählen

void Overlay::paintEvent( QPaintEvent *e )
{
    QPainter p(this);
    p.setOpacity(0.93);
    //p.fillRect( QRect(QPoint(0,0), size()), palette().brush(QPalette::Window) );
    QStyleOption opt;
    opt.initFrom( parentWidget() );
    style()->drawPrimitive( QStyle::PE_Widget, &opt, &p, parentWidget() );
}
Wenn ich die beiden parentWidget() durch this ersetzte, klappt es auch mit bespin nicht.

Nun würde ich gerne wissen, was ich falsch mache, bzw. ob ich noch bestimmte Sachen in der StyleOption drehen muss, damit das klappt.

Besten Dank
Franz

// edit:
Stell ich den Hintergrund auf "None" (also weder gradient noch tiled structure) klappt es auch mit bespin nicht mehr :/
Antworten