QGraphicsEffectLa 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�ritageH�rite de QObject. H�rit� par QGraphicsBlurEffect, QGraphicsColorizeEffect, QGraphicsDropShadowEffect et QGraphicsOpacityEffect. Cette classe a �t� introduite dans Qt 4.6. Description d�taill�eLa 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 :
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(). Typeenum QGraphicsEffect::ChangeFlagflags QGraphicsEffect::ChangeFlagsCette �num�ration d�crit ce qui a chang� dans QGraphicsEffectSource.
Le type ChangeFlags est un typedef de QFlags<ChangeFlag>. Il stocke des combinaisons OU des valeurs de ChangeFlag. enum QGraphicsEffect::PixmapPadModeCette �num�ration d�crit comment le pixmap retourn� depuis sourcePixmap doit �tre entour�.
Propri�t�senabled : boolCette 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�sbool isEnabled () const void setEnabled ( bool enable ) Signal de notification : void enabledChanged ( bool enabled ) Fonctions membresQGraphicsEffect::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 () constRetourne 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(). RemerciementsMerci � Louis du Verdier pour la traduction et � Dimitry Ernot, Jonathan Courtois ainsi qu'� Jacques Thery pour leur relecture ! |
Publicit�
Best OfActualit�s les plus luesSemaine
Mois
Ann�e
![]()
![]() Le blog Digia au hasard![]() D�ploiement d'applications Qt Commercial sur les tablettes Windows 8Le 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 utilesContact
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 ! |
Copyright © 2000-2012 - www.developpez.com