Transparent Widget Background?

Alles rund um die Programmierung mit Qt
Antworten
Marco812
Beiträge: 139
Registriert: 22. November 2005 11:28

Transparent Widget Background?

Beitrag von Marco812 »

Hallo,

wenn man in dem Beispiel QRDIR\demos\gardients auf die Schaltfläche What’s This? drückt, wird ein Infotext angezeigt, welcher halbtransparent unterlegt ist. Der Code dafür befindet sich im QRDIR\demos\shared.

Da das Beispiel recht umfangreich ist, weis in nicht genau was ich alles für mein vorhaben benötige.

Das ganze soll in meinem Programm so aussehen, ich drücke auf eine Schaltfläche und dann wird über dieser ein Infotext und darunter ein Bild angezeigt, welches halbtransparent unterlegt ist, wie in dem Beispiel.

Kann mir jemand einen Tipp und etwas Hilfestellung geben?

Gruß

Marco812

P.S.
Ein kleines Codebeispiel wäre super!
Zuletzt geändert von Marco812 am 31. Januar 2006 21:29, insgesamt 1-mal geändert.
Nassian
Beiträge: 126
Registriert: 20. Juni 2005 21:14

Beitrag von Nassian »

Ein Codebeispiel hab jetzt zwar nicht, aber sollte nicht so schwer zum Programmieren sein.

Im Prinzip musst du nur die Klasse QWidget neu implementieren und die paint Methode überschreiben (da zeichnest du dann dieses Blatt mit dem Schatten nach). Und dann setzt du einfach die Transparenz von dem Widget auf den Wert den du möchtest. Der QtAssistant sollte alles dafür bereit halten.
Marco812
Beiträge: 139
Registriert: 22. November 2005 11:28

Beitrag von Marco812 »

Hallo,

danke für den Tipp. Das es so funktioniert habe ich mittlerweile aus dem Beispiel erkennen können, leider scheitert es noch ein bisschen bei der Ausführung, aber ich werde mal schauen wie weit ich komme. Wenn ich es gelöst habe oder eine konkrete frage dazu habe, melde ich mich noch mal.

Gruß

Marco812
Marco812
Beiträge: 139
Registriert: 22. November 2005 11:28

Beitrag von Marco812 »

---
Zuletzt geändert von Marco812 am 30. Januar 2006 19:21, insgesamt 1-mal geändert.
Marco812
Beiträge: 139
Registriert: 22. November 2005 11:28

Beitrag von Marco812 »

Hallo,

kann mir evtl. jemand sagen, wie ich den Hintergrund von einem QWidget Transparent bekomme, dann wäre mein Problem auch gelöst!?

Gruß

Marco812
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

wenn du voll transparent meinst: hab ich hier mal beschrieben
Glaube an eine Lösung, nur dann kannst du auch eine finden.
Marco812
Beiträge: 139
Registriert: 22. November 2005 11:28

Beitrag von Marco812 »

Hallo,

ja ich meine voll transparent, aber bei mir funktioniert es leider nicht. Ich erhalte nur einen schwarzen Hintergrund. Ich habe einfach deinen Code in ein QWidget eingefügt und mit SetTransparency(this, TRUE); aufgerufen.

Hast du evtl. noch einen Tipp (QT 4.1)

Gruß

Marco812
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

bentutz du Qt 4.*, das statisch kompliliert wurde unter Windows? Da scheint das nämlich irgendwie Probleme zu machen...

Was für ein Widget ist es?
Versuch mal folgendes, setzt nicht nur die Alphas von:
QPalette::Base und QPalette::Background, sondern auch von:
QPalette::Light, QPalette::Dark

und wenn es ein Button ist, setz auch noch die von:
QPalette::Shadow, QPalette::Midlight, QPalette::Mid und QPalette::Button

Hoffe das hilft weiter


Elgrimm Esleborn

PS: Wenn es ein Button ist, ist das Schwarz selbstverständlich, da das Parent bei einem Buttonchild auf das Selbstzeichnen verzichtet, was das "nicht zeichnen" der Stelle verursacht. Und das sieht halt schwarz aus... macht man es statt dessen durchsichtig, so zeichnet das Parent die Stelle und sie ist nicht schwarz.
Glaube an eine Lösung, nur dann kannst du auch eine finden.
Marco812
Beiträge: 139
Registriert: 22. November 2005 11:28

Beitrag von Marco812 »

Hallo,

es will nicht funktionieren, ich habe mal den Code angehängt. Benutze Visual Studio 2003, wo kann ich da dynamisch oder statisch einstellen?

Wäre für weitere Hilfe dankbar.

Gruß

Marco812
Dateianhänge
Dialog.zip
(15.49 KiB) 240-mal heruntergeladen
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

tsja tut mir leid da kann ich nicht helfen...das liegt nämlich daran, dass es ein toplevel item ist...

da solltest du folgendes benutzen:

Code: Alles auswählen

void QWidget::setMask ( const QBitmap & bitmap )
void QWidget::setMask ( const QRegion & region )
Glaube an eine Lösung, nur dann kannst du auch eine finden.
Marco812
Beiträge: 139
Registriert: 22. November 2005 11:28

Beitrag von Marco812 »

Hallo,
es will mir nicht gelingen, ich habe auch schon die Beispiele durchgeschaut, aber nichts gefunden. Kennt jemand ein keines Beispiel doer würde mir eins schreiben?

Gruß

Marco812
Marco812
Beiträge: 139
Registriert: 22. November 2005 11:28

Beitrag von Marco812 »

Hallo,

das muss doch irgendwie gehen. Zum besseren Verständnis habe ich mal ein Bild angehängt.

Gruß

Marco812
Dateianhänge
trans.JPG
trans.JPG (23.44 KiB) 9008 mal betrachtet
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

mmh ich teste mal

Code: Alles auswählen

	QApplication::setStyle ( QStyleFactory::create ( "Windows" ) );
desweiteren solltest du QPalette::Button, QPalette::Window und QPalette::Base durchsichtig schalten...
Glaube an eine Lösung, nur dann kannst du auch eine finden.
Antworten