2010-10-14 6 views

Répondre

0

Vous pouvez essayer d'utiliser la propriété windowOpacity dans QWidget. Si cela ne fonctionne pas, vous devrez peut-être définir votre propre propriété et l'utiliser dans l'événement paint de votre widget.

8

Il y a deux sous-réponses à votre question, ce que j'ai joué avec au moins:

  1. Si vous souhaitez définir animer l'opacité d'une fenêtre de premier niveau QWidget, vous pouvez utiliser QPropertyAnimation de 0 à 1 sur la valeur "windowOpacity". Vous pourriez vouloir vérifier la syntaxe exacte puisque j'utilise PyQt.
  2. Si vous voulez animer l'opacité d'un bouton ou d'une étiquette de texte, cette propriété ne fonctionnera pas et vous devez utiliser QGraphicsWidgets. Ils héritent QGraphicsItem et ainsi, ils ont opacity. Malheureusement, cela signifie utiliser les widgets proxy QGrapgicsProxyWidget pour synchroniser les widgets normaux avec leurs homologues de widgets graphiques, car QGraphicsWidget n'hérite pas de QWidget. Pour en savoir plus, consultez le Animation Framework Examples, en particulier la machine d'état pour savoir comment utiliser les widgets proxy.

Pour windowOpacity animations:

QPropertyAnimation animate = new QPropertyAnimation(this, "windowOpacity", this);

animate.setDuration(100); animate.setStartValue(1); animate.setEndValue(0); animate.start();

Cela ne fonctionnera que sur les systèmes qui prennent en charge une sorte d'extension Composite.

J'espère que ça aide!

+0

Merci! Semble, que je devrais essayer la deuxième façon, parce que je dois rendre mes widgets (boutons, texte, etc.) en toute transparence transparent sur un événement. –

Questions connexes