Qt-Widget mit Transparenten Hintergrund
(Ich bin mit PySide, aber ich denke, die Antwort wäre die gleiche/ähnliche für jede Sprache-Bindungen).
Ich versuche es mit den geformten clock Beispiel, befindet sich hier, und bewirken, dass das Gesicht der Uhr (Kreis -) transparent sein, so dass alles, was ich sehe, sind die Zeiger und Minuten-ticks. Wie es ist, wenn das Beispiel ausgeführt wird, sieht es aus wie diese. Ich bin mit Windows 7.
So weit, ich habe versucht, die folgenden (im Konstruktor):
self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
- Uhr angezeigt wird (hat Präsenz in der task-Leiste), aber ich kann nicht sehen es überall
self.setAttribute(QtCore.Qt.WA_NoSystemBackground)
- Uhr erscheint, hat aber mit einem festen schwarzen hintergrund.
self.setWindowOpacity(0.5)
- Uhr erscheint, aber die gesamte Uhr ist transparent. Ich möchte den hintergrund (Gesicht), um transparent zu sein, aber ich möchte die Zeiger der Uhr sichtbar werden.
Für das Protokoll, ich denke, das widget hat einen transparenten hintergrund haben, aber es ist offensichtlich sitzen auf etwas anderes, das nicht. Ist das eine korrekte Aussage?
InformationsquelleAutor gdw2 | 2011-10-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hab!
Dies ist aus dem original-Quellcode-Beispiel (Konstruktor):
Ist hier die modifizierte (und funktionierende pro meine Frage) version:
Entfernen der
self.windowFlags()
war der Teil, der mir fehlte. (Ich bin mir nicht genau sicher, warum ich brauchte, um diese zu entfernen oder warum er dort war, mit zu beginnen,... noch viel zu lernen).Haben Sie bemerkt, dass die obigen änderungen in der
self.setWindowFlags
Linie?So sollte man herausfinden, welche flags gesetzt sind standardmäßig
self.windowFlags()
.InformationsquelleAutor gdw2
Wenn ich mich richtig erinnere, muss seine stylesheet auch:
Hoffe, das hilft.
QtCore.Qt.WA_TranslucentBackground
und muss nicht das Stylesheet selbst, sondern untergeordnete widgets enthalten, die im widget jedoch, dieautoFillBackground()==True
standardmäßig sollte es nicht gesetzt oder festgelegt haben, solltenQtCore.Qt.WA_TranslucentBackground
oder in der Tat wie Sie sagen, sollten einen transparenten hintergrund festlegen, indem Sie ein Stylesheet ein, die dann vererbt werden.InformationsquelleAutor BLeAm
im Uhr-Beispiel ther :
"setMask" machen die Runde Form
aber es ist das gleiche in PySide :
so sollte es auch funktionieren ?
InformationsquelleAutor KaZ