Was hätte der Lösungsansatz auch groß verändern sollen? Das Widget ist zwar rund, aber an der eigentlichen Problematik mit dem Hintergrund ändert sich gar nichts.
Auf dem Screenshot wird eben wie von dir beschrieben eine Maske gesetzt und an der gleichen Stelle, wo das Widget undurchsichtig in paintEvent der Kreis draufgezeichnet. Wenn ich die Geschichte mit dem PaintEvent weglasse, sieht man eben den blaßen roten Hintergrund, wie er auch schon in einem meiner älteren Beiträge zu sehen ist. Auf dem anderen Screenshot ist zu sehen, wie ich bei der Masken-Pixmap eine halbdurchsichtige Farbe gesetzt habe. Ist zwar halbdurchsichtig, aber nur durch die Punktierung...
Qt4: halbtransparente Widgets
-
geisterfahrer
- Beiträge: 10
- Registriert: 11. August 2004 11:36
- Wohnort: Achim bei Bremen
Nun ja, qt44.png sieht schon besser aus... Um das Problem entgültig zu lösen, musst du statt deinen Kreis in dem Widget zu zeichen, es mit einem QImage probieren. anschließend konvertierst du QImage in QPixmap und zeichnest dieses mit dem "Haupt"-painter... dann müsste es klappen...
etwa so:
etwa so:
Code: Alles auswählen
QImage kreis(radius, radius);
QPainter p(&kreis);
p->drawKreis()...
QPixmap pixKreis= kreis;
painterAusDemPaintEvent->drawPixmap(); // :) -
geisterfahrer
- Beiträge: 10
- Registriert: 11. August 2004 11:36
- Wohnort: Achim bei Bremen
Mit der Maske hab ich das Widget an einigen Stellen durchlässig gemacht und an anderen Stellen überhaupt nicht. Egal wie und was ich dann auf das Widget raufzeichnen lasse, entweder sieht man das gar nicht, oder voll. Was nun der Wechsel von QImage -> QPixmap für eine wundervolle Wendung vollbringen soll, ist mir schleierhaft - woher sollte das Image aufeinmal den durchsichtbaren Hintergrund herhaben? Das entzieht sich meiner Logik.
Ich habs trotzdem ausprobiert - und brachte gar nichts.
Ich habs trotzdem ausprobiert - und brachte gar nichts.
der Wechsel von QImage auf QPixmap soll auch nix bringen, das ist nur eine Frage der Effizienz, man kann natürlich auch QImage mit derawImage() zeichnen... Wichtig ist, dass ich ein halb transparentes Bild habe und dieses zeichne... Das müsste doch gehen oder...
Wenn irgendwas nicht funktioniert, dann bitte Code ins Studio....
Und nicht verzweifeln, Genosse, das wird schon..
Wenn irgendwas nicht funktioniert, dann bitte Code ins Studio....
Und nicht verzweifeln, Genosse, das wird schon..
Ne, jetzt darfst du doch verzweifeln... Das ganze kann gar nicht gehen, jedenfalls nicht mit Qt 3, da wir nix gegen Widget-background machen können... Das hab ich verpeilt... Ich benutze bei meinen Sachen eine Overlaytechnik, mit der man sowas erreichen kann, aber in deinem Fall ist es doch kompliziert anzuwenden...
Also, schau dir grabWidget() oder QPainter::redirect() an. Das lässt sich anwenden, wenn du nur irgend was darstellen möchtest. Eine schöne Lösung ist es aber nicht...
Ansonsten muss man klären, warum das hochgelobte alpha blending von QT 4 nicht funktioniert. Ich arbeite noch mit QT3 und kann daher dabei nicht helfen...
Also, schau dir grabWidget() oder QPainter::redirect() an. Das lässt sich anwenden, wenn du nur irgend was darstellen möchtest. Eine schöne Lösung ist es aber nicht...
Ansonsten muss man klären, warum das hochgelobte alpha blending von QT 4 nicht funktioniert. Ich arbeite noch mit QT3 und kann daher dabei nicht helfen...