QGraphicsEffect Class
La classe `QGraphicsEffect` est la classe de base de tous les effets graphiques. En savoir plus...
| En-tête : | #include <QGraphicsEffect> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake : | QT += widgets |
| Hérite de : | QObject |
| Hérité par : | QGraphicsBlurEffect, QGraphicsColorizeEffect, QGraphicsDropShadowEffect, et QGraphicsOpacityEffect |
Types publics
| enum | ChangeFlag { SourceAttached, SourceDetached, SourceBoundingRectChanged, SourceInvalidated } |
| flags | ChangeFlags |
| enum | PixmapPadMode { NoPad, PadToTransparentBorder, PadToEffectiveBoundingRect } |
Propriétés
- enabled : bool
Fonctions publiques
| QGraphicsEffect(QObject *parent = nullptr) | |
| virtual | ~QGraphicsEffect() |
| QRectF | boundingRect() const |
| virtual QRectF | boundingRectFor(const QRectF &rect) const |
| bool | isEnabled() const |
Emplacements publics
| void | setEnabled(bool enable) |
| void | update() |
Signaux
| void | enabledChanged(bool enabled) |
Fonctions protégées
| virtual void | draw(QPainter *painter) = 0 |
| void | drawSource(QPainter *painter) |
| QRectF | sourceBoundingRect(Qt::CoordinateSystem system = Qt::LogicalCoordinates) const |
| virtual void | sourceChanged(QGraphicsEffect::ChangeFlags flags) |
| bool | sourceIsPixmap() const |
| QPixmap | sourcePixmap(Qt::CoordinateSystem system = Qt::LogicalCoordinates, QPoint *offset = nullptr, QGraphicsEffect::PixmapPadMode mode = PadToEffectiveBoundingRect) const |
| void | updateBoundingRect() |
Description détaillée
Les effets modifient l’apparence des éléments en s’intégrant au pipeline de rendu et en agissant entre la source (par exemple, un ` QGraphicsPixmapItem`) et le périphérique de destination (par exemple, la fenêtre d’affichage de ` QGraphicsView`). Les effets peuvent être désactivés en appelant ` setEnabled(false)`. Si les effets sont désactivés, la source est rendue directement.
Pour ajouter un effet visuel à un QGraphicsItem, par exemple, vous pouvez utiliser l’un des effets standard ou, à défaut, créer votre propre effet en créant une sous-classe de QGraphicsEffect. L’effet peut ensuite être appliqué à l’élément à l’aide de QGraphicsItem::setGraphicsEffect().
Qt fournit les effets standard suivants :
- QGraphicsBlurEffect - floute l’élément selon un rayon donné
- QGraphicsDropShadowEffect - ajoute une ombre portée derrière l’élément
- QGraphicsColorizeEffect - affiche l'élément dans des nuances d'une couleur donnée
- QGraphicsOpacityEffect - affiche l'élément avec une opacité
| |
|
|
|
|

Pour plus d’informations sur l’utilisation de chaque effet, consultez la documentation spécifique à l’effet concerné.
Pour créer votre propre effet personnalisé, créez une sous-classe de `QGraphicsEffect` (ou de tout autre effet existant) et réimplémentez la fonction virtuelle ` draw()`. Cette fonction est appelée chaque fois que l'effet doit être redessiné. La fonction ` draw()` prend comme argument le « peintre » (painter) avec lequel effectuer le dessin. Pour plus d’informations, consultez la documentation relative à la fonction ` draw()`. Dans la fonction ` draw()`, vous pouvez appeler ` sourcePixmap()` pour obtenir une image bitmap de la source de l’effet graphique, que vous pourrez ensuite traiter.
Si votre effet change, utilisez ` update()` pour demander un rafraîchissement. Si votre effet personnalisé modifie le rectangle de délimitation de la source (par exemple, un effet de lueur radiale pouvant nécessiter l’application d’une marge supplémentaire), vous pouvez réimplémenter la fonction virtuelle ` boundingRectFor()` et appeler ` updateBoundingRect()` pour notifier au framework toute modification de ce rectangle. La fonction virtuelle sourceChanged() est appelée pour signaler aux effets que la source a subi une modification — par exemple, si la source est un QGraphicsRectItem et que ses paramètres de rectangle ont changé.
Voir également ` QGraphicsItem::setGraphicsEffect()` et ` QWidget::setGraphicsEffect()`.
Documentation sur les types de membres
enum QGraphicsEffect::ChangeFlag
flags QGraphicsEffect::ChangeFlags
Cette énumération décrit les modifications apportées à QGraphicsEffectSource.
| Constante | Valeur | Description |
|---|---|---|
QGraphicsEffect::SourceAttached | 0x1 | L'effet est installé sur une source. |
QGraphicsEffect::SourceDetached | 0x2 | L'effet est désinstallé d'une source. |
QGraphicsEffect::SourceBoundingRectChanged | 0x4 | Le rectangle de délimitation de la source a changé. |
QGraphicsEffect::SourceInvalidated | 0x8 | L'apparence visuelle de la source a changé. |
Le type ChangeFlags est un typedef pour QFlags<ChangeFlag>. Il stocke une combinaison OR de valeurs ChangeFlag.
enum QGraphicsEffect::PixmapPadMode
Cette énumération décrit comment la carte de pixels renvoyée par la fonction sourcePixmap doit être complétée.
| Constante | Valeur | Description |
|---|---|---|
QGraphicsEffect::NoPad | 0 | La carte de pixels ne doit pas être complétée par un remplissage supplémentaire. |
QGraphicsEffect::PadToTransparentBorder | 1 | La carte de pixels doit être complétée pour garantir qu’elle présente une bordure entièrement transparente. |
QGraphicsEffect::PadToEffectiveBoundingRect | 2 | La carte de pixels doit être complétée par un remplissage afin de correspondre au rectangle de délimitation effectif de l'effet. |
Documentation de la propriété
enabled : bool
Cette propriété s'applique, que l'effet soit activé ou non.
Si un effet est désactivé, la source sera affichée normalement, sans aucune interférence de la part de l'effet. Si l'effet est activé, la source sera affichée avec l'effet appliqué.
Cette propriété est activée par défaut.
Grâce à cette propriété, vous pouvez désactiver certains effets sur les plateformes peu performantes, afin de garantir la réactivité de l'interface utilisateur.
Fonctions d'accès :
| bool | isEnabled() const |
| void | setEnabled(bool enable) |
Signal de notification :
| void | enabledChanged(bool enabled) |
Documentation des fonctions membres
QGraphicsEffect::QGraphicsEffect(QObject *parent = nullptr)
Crée une nouvelle instance de `QGraphicsEffect` avec l'parent` spécifié.
[virtual noexcept] QGraphicsEffect::~QGraphicsEffect()
Supprime l'effet de la source et détruit l'effet graphique.
QRectF QGraphicsEffect::boundingRect() const
Renvoie le rectangle englobant effectif de cet effet, c'est-à-dire le rectangle englobant de la source en coordonnées du périphérique, ajusté en fonction des marges éventuellement appliquées par l'effet lui-même.
Voir également boundingRectFor() et updateBoundingRect().
[virtual] QRectF QGraphicsEffect::boundingRectFor(const QRectF &rect) const
Renvoie le rectangle de délimitation effectif de cet effet, à partir de l'rect fournie dans les coordonnées du périphérique. Lorsque vous écrivez votre propre effet personnalisé, vous devez appeler la fonction updateBoundingRect() chaque fois que des paramètres susceptibles d'entraîner un changement de la valeur renvoyée par cette fonction sont modifiés.
Voir également sourceBoundingRect().
[pure virtual protected] void QGraphicsEffect::draw(QPainter *painter)
Cette fonction purement virtuelle dessine l'effet et est appelée chaque fois que la source doit être dessinée.
Réimplémentez cette fonction dans une sous-classe de ` QGraphicsEffect ` pour fournir l'implémentation de l'affichage de l'effet, en utilisant ` painter`.
Par exemple :
void MyGraphicsEffect::draw(QPainter *painter)
{
//...
QPoint offset;
if (sourceIsPixmap()) {
// No point in drawing in device coordinates (pixmap will be scaled anyways).
const QPixmap pixmap = sourcePixmap(Qt::LogicalCoordinates, &offset);
//...
painter->drawPixmap(offset, pixmap);
} else {
// Draw pixmap in device coordinates to avoid pixmap scaling;
const QPixmap pixmap = sourcePixmap(Qt::DeviceCoordinates, &offset);
painter->setWorldTransform(QTransform());
//...
painter->drawPixmap(offset, pixmap);
}
//...
}Cette fonction ne doit pas être appelée explicitement par l'utilisateur, car elle est destinée uniquement à être réimplémentée.
[protected] void QGraphicsEffect::drawSource(QPainter *painter)
Affiche directement la source à l'aide de l'painter fournie.
Cette fonction ne doit être appelée qu'à partir de ` QGraphicsEffect::draw()` ().
Par exemple :
void MyGraphicsOpacityEffect::draw(QPainter *painter)
{
// Fully opaque; draw directly without going through a pixmap.
if (qFuzzyCompare(m_opacity, 1)) {
drawSource(painter);
return;
}
//...
}Voir également QGraphicsEffect::draw().
[signal] void QGraphicsEffect::enabledChanged(bool enabled)
Ce signal est émis chaque fois que l'effet est activé ou désactivé. Le paramètre « enabled » indique le nouvel état d'activation de l'effet.
Remarque : signalde notification pour la propriété enabled.
Voir également isEnabled().
[protected] QRectF QGraphicsEffect::sourceBoundingRect(Qt::CoordinateSystem system = Qt::LogicalCoordinates) const
Renvoie le rectangle englobant de la source mise en correspondance avec l'system donné.
L'appel de cette fonction avec ` Qt::DeviceCoordinates ` en dehors de ` QGraphicsEffect::draw()` donnera des résultats indéfinis, car aucun contexte de périphérique n'est disponible.
Voir également draw().
[virtual protected] void QGraphicsEffect::sourceChanged(QGraphicsEffect::ChangeFlags flags)
Cette fonction virtuelle est appelée par ` QGraphicsEffect ` pour signaler que la source a changé. Si l'effet utilise un cache, celui-ci doit être vidé afin de refléter la nouvelle apparence de la source.
L'flags décrit ce qui a changé.
[protected] bool QGraphicsEffect::sourceIsPixmap() const
Renvoie « true » si la source est effectivement une image bitmap, par exemple un QGraphicsPixmapItem.
Cette fonction est utile à des fins d’optimisation. Par exemple, il est inutile de dessiner la source en coordonnées du périphérique pour éviter la mise à l’échelle de la carte de pixels si cette fonction renvoie « true » : la carte de pixels source sera de toute façon mise à l’échelle.
[protected] QPixmap QGraphicsEffect::sourcePixmap(Qt::CoordinateSystem system = Qt::LogicalCoordinates, QPoint *offset = nullptr, QGraphicsEffect::PixmapPadMode mode = PadToEffectiveBoundingRect) const
Renvoie une image pixmap sur laquelle la source a été dessinée.
L'system spécifie le système de coordonnées à utiliser pour la source. Le paramètre facultatif offset renvoie le décalage à l'endroit où la carte de pixels doit être dessinée à l'aide du peintre actuel. Pour contrôler la manière dont la carte de pixels est complétée, utilisez le paramètre mode.
La carte de pixels renvoyée est découpée selon le rectangle de périphérique du peintre actuel lorsque system vaut Qt::DeviceCoordinates.
L'appel de cette fonction avec ` Qt::DeviceCoordinates ` en dehors de ` QGraphicsEffect::draw()` donnera des résultats indéfinis, car aucun contexte de périphérique n'est disponible.
Voir également draw() et boundingRect().
[slot] void QGraphicsEffect::update()
Planifie un rafraîchissement de l'effet. Appelez cette fonction chaque fois que l'effet doit être rafraîchi. Cette fonction ne déclenche pas de rafraîchissement de la source.
Voir également updateBoundingRect().
[protected] void QGraphicsEffect::updateBoundingRect()
Cette fonction informe le framework d'effets lorsque le rectangle de délimitation de l'effet a changé. En tant qu'auteur d'effets personnalisés, vous devez appeler cette fonction chaque fois que vous modifiez des paramètres susceptibles d'entraîner un changement de la valeur renvoyée par la fonction virtuelle boundingRectFor().
Cette fonction appellera update() si cela s’avère nécessaire.
Voir également boundingRectFor(), boundingRect() et sourceBoundingRect().
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.




