Widget Qt avec un Fond Transparent
(Je suis en utilisant PySide, mais je pense que la réponse serait la même pour toutes les liaisons de langage).
Je suis en train de prendre la forme d'horloge exemple, situé ici, et la face de l'horloge (cercle) pour être transparent, de sorte que tout ce que je vois sont les mains de l'horloge et des minutes tiques. Comme c'est, quand l'exemple fonctionne, il ressemble à cette. Je suis sous Windows 7.
Jusqu'à présent, j'ai essayé le suivant (dans le constructeur):
self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
- L'horloge s'affiche (a présence dans la barre de tâches), mais je ne peux pas le voir partout
self.setAttribute(QtCore.Qt.WA_NoSystemBackground)
- L'horloge s'affiche, mais possède une solide fond noir.
self.setWindowOpacity(0.5)
- L'horloge s'affiche, mais l'horloge entière est transparent. Je veux l'arrière-plan (visage) pour être transparent, mais je veux les mains de l'horloge pour être visible.
Pour le record, je pense que le widget ne avoir un fond transparent, mais c'est évidemment assis sur quelque chose d'autre qui ne l'est pas. C'est qu'un énoncé correct?
OriginalL'auteur gdw2 | 2011-10-05
Vous devez vous connecter pour publier un commentaire.
Obtenu!
C'est à partir de l'exemple de code (constructeur):
Ici est modifié (et de travail par ma question) version:
Retrait de la
self.windowFlags()
est la partie qui me manquait. (Je ne sais pas exactement pourquoi j'avais besoin de supprimer ce ou pourquoi il était là pour commencer... encore beaucoup à apprendre).Avez-vous remarqué le changement ci-dessus dans le
self.setWindowFlags
ligne?Il faut donc savoir quelles options sont définies par défaut par
self.windowFlags()
.OriginalL'auteur gdw2
Si je me souviens correctement, vous devez avoir défini sa feuille de style aussi:
Espère que ça aide.
QtCore.Qt.WA_TranslucentBackground
et n'a pas besoin de la feuille de style elle-même, mais l'enfant widgets contenus dans le widget cependant qui ontautoFillBackground()==True
par défaut devrait l'être désactivées ou aurait dûQtCore.Qt.WA_TranslucentBackground
ou, en effet, comme vous le dites doit avoir un arrière-plan transparent de couleur définie par une feuille de style qui est ensuite hérité.OriginalL'auteur BLeAm
l'horloge à l'exemple de location est :
la "setMask" faire la forme ronde
mais il y a la même dans PySide :
donc ça devrait marcher aussi ?
OriginalL'auteur KaZ