Viadeo Twitter Google Bookmarks ! Facebook Digg del.icio.us MySpace Yahoo MyWeb Blinklist Netvouz Reddit Simpy StumbleUpon Bookmarks Windows Live Favorites 
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Toutes les fonctions  ·  Vues d'ensemble  · 

QGraphicsEffect

La classe QGraphicsEffect est la classe de base de tous les effets graphiques. Plus d'informations...

#include <QGraphicsEffect>

Voir la position dans l'arbre des classes.

  

H�ritage

H�rite de QObject.

H�rit� par QGraphicsBlurEffect, QGraphicsColorizeEffect, QGraphicsDropShadowEffect et QGraphicsOpacityEffect.

Cette classe a �t� introduite dans Qt 4.6.

Description d�taill�e

La classe QGraphicsEffect est la classe de base de tous les effets graphiques.

Les effets alt�rent l'apparence des �l�ments par hooking dans le pipeline de rendu et d'exploitation entre la source (par exemple, un QGraphicsPixmapItem) et le dispositif cible (par exemple, le viewport d'un QGraphicsView). Les effets peuvent �tre d�sactiv�s par l'appel de 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 standards ou bien cr�er votre propre effet en sous-classant QGraphicsEffect. L'effet peut �tre install� sur l'�l�ment en utilisant QGraphicsItem::setGraphicsEffect().

Qt fournit les effets standards suivants :

image  
image image
image image

image

Pour plus d'informations sur la mani�re d'utiliser chaque effet, se r�f�rer � la documentation sp�cifique de chaque effet.

Pour cr�er son propre effet, il s'agit de cr�er une sous-classe de QGraphicsEffect (ou de tout autre effet existant) et de r�-impl�menter la fonction virtuelle draw(). Cette fonction est appel�e � chaque fois que l'effet n�cessite d'�tre redessin�. La fonction draw() prend en argument le painter avec lequel dessiner. Pour plus d'information, se r�f�rer � la documentation de draw(). Dans la fonction draw(), il est possible d'appeler sourcePixmap() pour r�cup�rer un pixmap de la source de l'effet graphique sur lequel il est alors possible de traiter.

Si l'effet change, la fonction update() peut �tre utilis�e pour demander � ce qu'il y ait une nouvelle peinture. Si l'effet personnalis� change le rectangle de limites de la source, par exemple, un effet de lueur radiale n�cessitant une marge suppl�mentaire, il est possible de r�-impl�menter la fonction virtuelle boundingRectFor() et d'appeler updateBoundingRect() pour notifier le framework � chaque fois que ce rectangle change. La fonction virtuelle sourceChanged() est appel�e pour pr�venir les effets que la source a chang� d'une certaine mani�re - par exemple, si la source est un QGraphicsRectItem et que son param�tre rectangle a chang�.

Voir aussi QGraphicsItem::setGraphicsEffect() et QWidget::setGraphicsEffect().

Type

enum QGraphicsEffect::ChangeFlagflags QGraphicsEffect::ChangeFlags

Cette �num�ration d�crit ce qui a chang� dans 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 limites de la source a chang�.
QGraphicsEffect::SourceInvalidated 0x8 L'apparence visuelle de la source a chang�.

Le type ChangeFlags est un typedef de QFlags<ChangeFlag>. Il stocke des combinaisons OU des valeurs de ChangeFlag.

enum QGraphicsEffect::PixmapPadMode

Cette �num�ration d�crit comment le pixmap retourn� depuis sourcePixmap doit �tre entour�.

Constante Valeur Description
QGraphicsEffect::NoPad   Le pixmap ne doit pas recevoir de contour additionnel.
QGraphicsEffect::PadToTransparentBorder 1 Le pixmap doit �tre entour� pour garantir qu'il ait une bordure compl�tement transparente.
QGraphicsEffect::PadToEffectiveBoundingRect 2 Le pixmap doit �tre entour� pour s'harmoniser avec le rectangle effectif de limites de l'effet.

Propri�t�s

enabled : bool

Cette propri�t� d�finit si l'effet est activ� ou non.

Si un effet est d�sactiv�, la source sera rendue normalement sans interf�rence en provenance de l'effet. Si l'effet est activ�, la source sera rendue avec l'effet appliqu�.

Cette propri�t� est activ�e par d�faut.

En utilisant cette propri�t�, vous pouvez d�sactiver certains effets sur les plateformes lentes afin de garantir que l'interface utilisateur reste r�pondante.

Fonctions d'acc�s

bool isEnabled () const

void setEnabled ( bool enable )

Signal de notification :

void enabledChanged ( bool enabled )

Fonctions membres

QGraphicsEffect::QGraphicsEffect ( QObject * parent = 0 )

Construit une nouvelle instance de QGraphicsEffect ayant le parent sp�cifi�.

QGraphicsEffect::~QGraphicsEffect () [virtual]

Retire l'effet de la source et d�truit l'effet graphique.

QRectF QGraphicsEffect::boundingRect () const

Retourne le rectangle effectif de limites de cet effet, c'est-�-dire, le rectangle de limites de la source dans les coordonn�es du dispositif, ajust� par toute marge appliqu�e par l'effet lui-m�me.

Voir aussi boundingRectFor() et updateBoundingRect().

QRectF QGraphicsEffect::boundingRectFor ( const QRectF & rect ) const [virtual]

Retourne le rectangle effectif de limites de cet effet, donn� par le rect fourni dans les coordonn�es du dispositif. Lors de la r��criture d'un effet personnalis�, il est n�cessaire d'appeler updateBoundingRect() � chaque fois que des param�tres changent, ce qui peut faire en sorte que cette fonction retourne une valeur diff�rente.

Voir aussi sourceBoundingRect().

void QGraphicsEffect::draw ( QPainter * painter ) [pure virtual protected]

Cette fonction pure virtuelle dessine l'effet et est appel�e � chaque fois que la source n�cessite d'�tre dessin�e.

R�impl�mentez cette fonction dans une sous-classe de QGraphicsEffect pour fournir l'impl�mentation de dessin de l'effet, en utilisant painter.

Par exemple :

 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 dans le sens o� elle est uniquement con�ue pour �tre r�impl�ment�e.

void QGraphicsEffect::drawSource ( QPainter * painter ) [protected]

Dessine directement la source en utilisant le painter donn�.

Cette fonction devrait uniquement �tre appel�e depuis QGraphicsEffect::draw().

Par exemple :

 MyGraphicsOpacityEffect::draw(QPainter *painter)
 {
     // Fully opaque; draw directly without going through a pixmap.
     if (qFuzzyCompare(m_opacity, 1)) {
         drawSource(painter);
         return;
     }
     ...
 }

Voir aussi QGraphicsEffect::draw().

void QGraphicsEffect::enabledChanged ( bool enabled ) [signal]

Ce signal est �mis � chaque fois que l'effet est activ� ou d�sactiv�. Le param�tre enabled d�finit si l'effet est activ� ou non.

Voir aussi isEnabled().

QRectF QGraphicsEffect::sourceBoundingRect ( Qt::CoordinateSystem system = Qt::LogicalCoordinates ) const [protected]

Retourne le rectangle de limites de la source mapp�e au system donn�.

L'appel de cette fonction avec Qt::DeviceCoordinates � l'ext�rieur de QGraphicsEffect::draw() donnera des r�sultats ind�termin�s puisqu'il n'y a pas de contexte de dispositif disponible.

Voir aussi draw().

void QGraphicsEffect::sourceChanged ( ChangeFlags flags ) [virtual protected]

Cette fonction virtuelle est appel�e par QGraphicsEffect pour notifier � l'effet que la source a chang�. Si l'effet applique un cache, alors ce cache devra �tre purg� afin de refl�ter la nouvelle apparence de la source.

Le param�tre flags d�crit ce qui a chang�.

bool QGraphicsEffect::sourceIsPixmap () const [protected]

Retourne true si la source effective est un pixmap, par exemple un QGraphicsPixmapItem.

Cette fonction est pratique pour l'optimisation. Par exemple, il n'y a pas de particularit� dans le dessin de la source dans les coordonn�es du dispositif permettant d'�viter la mise � l'�chelle du pixmap, si cette fonction retourne true - le pixmap source sera �chelonn� de toute mani�re.

QPixmap QGraphicsEffect::sourcePixmap ( Qt::CoordinateSystem system = Qt::LogicalCoordinates, QPoint * offset = 0, PixmapPadMode mode = PadToEffectiveBoundingRect ) const [protected]

Retourne un pixmap avec la source peinte � l'int�rieur.

Le system sp�cifie le syst�me de coordonn�es � utiliser pour la source. Le param�tre optionnel offset retourne l'offset o� le pixmap doit �tre peint lors de l'utilisation du painter actuel. Pour contr�ler la mani�re dont le pixmap est entour�, utilisez le param�tre mode.

Le pixmap retourn� est rattach� au rectangle actuel du peintre du dispositif lorsque system est Qt::DeviceCoordinates.

L'appel de cette fonction avec Qt::DeviceCoordinates � l'ext�rieur de QGraphicsEffect::draw() donnera des r�sultats ind�termin�s puisqu'il n'y a pas de contexte de dispositif disponible.

Voir aussi draw() et boundingRect().

void QGraphicsEffect::update () [slot]

Demande � ce que l'effet soit redessin�. Appelez cette fonction � chaque fois que l'effet n�cessite d'�tre redessin�. Cette fonction ne redessine pas la source.

Voir aussi updateBoundingRect().

void QGraphicsEffect::updateBoundingRect () [protected]

Cette fonction notifie le framework d'effets lorsque le rectangle de limites de l'effet a chang�. En tant qu'auteur de l'effet personnalis�, vous devez appeler cette fonction � chaque fois que vous changez un param�tre qui va engendrer le retour de boundingRectFor() d'une valeur diff�rente.

Cette fonction appellera update() si n�cessaire.

Voir aussi boundingRectFor(), boundingRect() et sourceBoundingRect().

Remerciements

Merci � Louis du Verdier pour la traduction et � Dimitry Ernot, Jonathan Courtois ainsi qu'� Jacques Thery pour leur relecture !

Publicit�

Best Of

Actualit�s les plus lues

Semaine
Mois
Ann�e
  1. � Quelque chose ne va vraiment pas avec les d�veloppeurs "modernes" �, un d�veloppeur � "l'ancienne" critique la multiplication des biblioth�ques 94
  2. Apercevoir la troisi�me dimension ou l'utilisation multithread�e d'OpenGL dans Qt, un article des Qt Quarterly traduit par Guillaume Belz 0
  3. Les d�veloppeurs ignorent-ils trop les failles d�couvertes dans leur code ? Prenez-vous en compte les remarques des autres ? 17
  4. Pourquoi les programmeurs sont-ils moins pay�s que les gestionnaires de programmes ? Manquent-ils de pouvoir de n�gociation ? 42
  5. Quelles nouveaut�s de C++11 Visual C++ doit-il rapidement int�grer ? Donnez-nous votre avis 10
  6. Adieu qmake, bienvenue qbs : Qt Building Suite, un outil d�claratif et extensible pour la compilation de projets Qt 17
  7. 2017 : un quinquennat pour une nouvelle version du C++ ? Possible, selon Herb Sutter 6
Page suivante

Le blog Digia au hasard

Logo

D�ploiement d'applications Qt Commercial sur les tablettes Windows 8

Le blog Digia est l'endroit privil�gi� pour la communication sur l'�dition commerciale de Qt, o� des r�ponses publiques sont apport�es aux questions les plus pos�es au support. Lire l'article.

Communaut�

Ressources

Liens utiles

Contact

  • Vous souhaitez rejoindre la r�daction ou proposer un tutoriel, une traduction, une question... ? Postez dans le forum Contribuez ou contactez-nous par MP ou par email (voir en bas de page).

Qt dans le magazine

Cette page est une traduction d'une page de la documentation de Qt, �crite par Nokia Corporation and/or its subsidiary(-ies). Les �ventuels probl�mes r�sultant d'une mauvaise traduction ne sont pas imputables � Nokia. Qt 4.7
Copyright © 2012 Developpez LLC. Tous droits r�serv�s Developpez LLC. Aucune reproduction, m�me partielle, ne peut �tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'� 3 ans de prison et jusqu'� 300 000 E de dommages et int�r�ts. Cette page est d�pos�e � la SACD.
Vous avez d�nich� une erreur ? Un bug ? Une redirection cass�e ? Ou tout autre probl�me, quel qu'il soit ? Ou bien vous d�sirez participer � ce projet de traduction ? N'h�sitez pas � nous contacter ou par MP !
 
 
 
 
Partenaires

H�bergement Web