Effet de flou sur un QWidget dans Qt
Est-il un moyen de brouiller un widget Qt? Par exemple, supose que je veux créer un "Chargement..." dialogue et l'arrière-plan flou (pas de fenêtre active).
Vous devez vous connecter pour publier un commentaire.
Cette réponse, c'est dans une série de mes superposition des réponses reliées à l': première, deuxième, troisième.
Il nécessite un peu de soin, si vous le souhaitez pour qu'il fonctionne sur toutes les plates-formes. Vous ne pouvez pas appliquer des effets directement sur les fenêtres de niveau supérieur. La hiérarchie doit se présenter comme suit:
D'appliquer l'effet à la
Target
widget (par exemple, unQMainWindow
). LeContainerWidget
est une classe d'assistance qui garde les enfants occupant toute la largeur du widget. Cela évite la nécessité expresse de zéro marge de mise en page.Le ci-dessous fonctionne, même sur un Mac. Il ne serait pas, vous avait renonce a la
ContainerWidget
. Cela fonctionne de façon portable sur Qt 5 seulement, malheureusement. Sur Qt 4, votre "cross platform" appui exclut Mac 🙁 Il fonctionne bien sur Windows en utilisant soit Qt 4 (4.8.5) ou Qt 5.Voir
QGraphicsBlurEffect Classe
etQWidget::setGraphicsEffect()
.Vous pouvez vous référer à cette article si vous voulez appliquer l'effet de flou sur une image. Après la création de votre image floue, vous pouvez le dessiner dans
QWidget::paintEvent()
fonction.