QPainterEvent

Alles rund um die Programmierung mit Qt
bar
Beiträge: 15
Registriert: 12. Oktober 2004 10:25

Beitrag von bar »

hallo , vielen dank für Deine Antwort!

Darf ich Dich noch etwas fragen?!
Vielleicht kannst Du mir etwas empfehlen....
Ich habe jetzt ein logisches Problem:-(
Ich rufe die Methode grabWidget(..) auf.
Da mein Widget BackgroundBild enthält, musste ich beim Zeichen vom Label eine Maske mit den Werten 0 setzen, um die Transparenz zu garantieren.
Das Widget sieht ganz gut aus!
Wenn ich davon mit der Methode grabWidget() ein QPixmap erzeuge..
Hintergund von meinem Label ist schwarz, weil die Maske nicht übernommen wird...
Vielleicht kennst Du einen Trick, wie ich die Maske bei der Methode grabWidget() behalten kann...
Vielen Dank!
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Hmm. Ich kann mir kaum vorstellen, dass es mit grabWidget() geht.
Das Problem ist, dass grabWidget() ein RGB-Pixmap liefert und nicht ein RGBA, wie es in deinem Fall sein sollte. Man könnte bestimmt eine Lösung finden, aber da must du schon etwas genuer über deine Anwendung, Klassen usw. berichten. Am besten mit Beispielcode.
bar
Beiträge: 15
Registriert: 12. Oktober 2004 10:25

Beitrag von bar »

danke,
den ganzen Code kann ich nicht zuschicken, es ist sehr umfangreich:-(
Ich habe echt keine Idee, wie ich mein Pixmap transparent machen
kann:-(

Der Code sieht ungefähr so aus...
QLabel label (.....);
QBitmap mask(size());
mask.fill(color0);
label.setMask(mask);

na gut , wenn ich davon dann "grabe", grabWidget(label,....);
Entsprechend meine Transparenz geht verloren:-( Aber es ist klar schon, wegen RGB und RGBA -Farben...

vielleicht hast Du eine Idee....
Danke!
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Hm, probier mal folgendes mit deinem Pixmap:

QPixmap pix = grabWidget();
pix.setMask( pix.createHeuristicMask() );
bar
Beiträge: 15
Registriert: 12. Oktober 2004 10:25

Beitrag von bar »

hallo, danke, aber leider hat nicht funktioniert....
Ich schreibe jetzt ins Forum, vielleicht hat jemand das gleiche Problem gehabt....

Vielen Dank für die Hilfe!
Antworten