QGraphicsView transparent [Gelöst]

Alles rund um die Programmierung mit Qt
Antworten
dazedly
Beiträge: 197
Registriert: 3. Oktober 2010 15:38
Kontaktdaten:

QGraphicsView transparent [Gelöst]

Beitrag von dazedly »

Ich versuche schon seit ner ganzen Weile einen Weg zu finden das QGraphicsView und die Scene Transparent zu bekommen. Es sollen nur die Items angezeigt werden. Das View ist frameless.

Ich hab auch schon die Window Farbe aus der Standardpalette benutzt.

Code: Alles auswählen

	QPalette pal;
	scene->setBackgroundBrush(pal.window());
nur irgendwie ist das ein helleres Grau, als das von den Widgets hinten dran...
Hat Jemand noch nen Tipp, oder ne Lösung?
Zuletzt geändert von dazedly am 14. März 2011 14:06, insgesamt 1-mal geändert.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Kannst du mal bitte etwas genauer erklären?
Ist deine View ein Toplevel-WIndow, sieht man da dann die darunter liegenden anderen Fenster (also Programme) hindurch?
Oder ist die View nur ein Overlay über ein anderes Widget in deinem Programm?
dazedly
Beiträge: 197
Registriert: 3. Oktober 2010 15:38
Kontaktdaten:

Beitrag von dazedly »

Das View ist ein Child von einem TabWidget, es ist in einem Layout darin. Ich möchte, dass man dur das View und die Scene das TabWidget sehen kann, oder es soll die Selbe BakgroundColor haben.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Code: Alles auswählen

QPalette pal = graphicsView->palette();
QColor baseColor = pal.color(QPalette::Base);
baseColor.setAlpha(100);
pal.setColor(QPalette::Base, baseColor);
graphicsView->setPalette(pal);
Prinzipiell: Willst du die Farben eines bestimmten Widgets ändern, nimm dir die aktuelle Palette des betreffenden Objekts, damit wirklich nur die Werte verändert werden, die es brauchen.

Das Ändern des BackgroundBrush bringt nichts, da dieser über den Hintergrund des ScrollArea malt, und deshalb auch keine Transparenz entsteht.
dazedly
Beiträge: 197
Registriert: 3. Oktober 2010 15:38
Kontaktdaten:

Beitrag von dazedly »

Ich hab das jetzt ausprobiert, aber leider ist das Grau immer noch zu hell.
Dateianhänge
snapshot2.png
snapshot2.png (4.6 KiB) 4176 mal betrachtet
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Kannst du den Code zeigen, der bei dir grad läuft? Am besten in Form eines kompletten, funktionsfähigen, minimalen Beispiels.
Man sieht zwar einen leicht helleren Bereich, das kann aber auch vom Oxygen-style kommen. Bei dir ist eine GroupBox involviert (schaut jedenfalls so aus), die hat einen leicht helleren Background.
dazedly
Beiträge: 197
Registriert: 3. Oktober 2010 15:38
Kontaktdaten:

Beitrag von dazedly »

Hier, hab ich mal eben mit dem QtCreator gemacht. Ich hoffe mal, es hat den selben Effekt wie bei mir.
Dateianhänge
testpro.zip
(1.52 KiB) 124-mal heruntergeladen
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Tjo, da hätte ich doch richtig gelegen:
Alpha reicht von 0 (transparent) bis 255 (opaque). Du hast die 100 aus meinem Beispiel übernommen. Das ergibt in der Summe bei Überlagerung eine andere Farbe.
Wenn du die view voll transparent (setAlpha(0)) machst, sollte die Farbe passen. Mir war nicht klar, dass du volle Transparenz haben willst, dann hätte ich in meinem Beispiel gleich die 100 durch eine 0 ersetzt.
dazedly
Beiträge: 197
Registriert: 3. Oktober 2010 15:38
Kontaktdaten:

Beitrag von dazedly »

oha.... bin doof -.- Sorry, wenn ich nicht nur einfach stupide kopiert hätte, wäre mir das sicher auch aufgefallen. Danke für deine Hilfe, jetzt siehts richtig aus!
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Kein Problem ;)
Bekanntermaßen produziert Copy/Paste die schwersten Fehler.
Antworten