Sur cette page

QPaintEngine Class

La classe `QPaintEngine` fournit une définition abstraite de la manière dont ` QPainter ` effectue le dessin sur un périphérique donné, sur une plate-forme donnée. En savoir plus...

En-tête : #include <QPaintEngine>
CMake : find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake : QT += gui

Types publics

enum DirtyFlag { DirtyPen, DirtyBrush, DirtyBrushOrigin, DirtyFont, DirtyBackground, …, AllDirty }
flags DirtyFlags
enum PaintEngineFeature { AlphaBlend, Antialiasing, BlendModes, BrushStroke, ConicalGradientFill, …, AllFeatures }
flags PaintEngineFeatures
enum PolygonDrawMode { OddEvenMode, WindingMode, ConvexMode, PolylineMode }
enum Type { X11, Windows, MacPrinter, CoreGraphics, QuickDraw, …, Direct2D }

Fonctions publiques

QPaintEngine(QPaintEngine::PaintEngineFeatures caps = PaintEngineFeatures())
virtual ~QPaintEngine()
virtual bool begin(QPaintDevice *pdev) = 0
virtual void drawEllipse(const QRectF &rect)
virtual void drawEllipse(const QRect &rect)
virtual void drawImage(const QRectF &rectangle, const QImage &image, const QRectF &sr, Qt::ImageConversionFlags flags = Qt::AutoColor)
virtual void drawLines(const QLineF *lines, int lineCount)
virtual void drawLines(const QLine *lines, int lineCount)
virtual void drawPath(const QPainterPath &path)
virtual void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr) = 0
virtual void drawPoints(const QPoint *points, int pointCount)
virtual void drawPoints(const QPointF *points, int pointCount)
virtual void drawPolygon(const QPointF *points, int pointCount, QPaintEngine::PolygonDrawMode mode)
virtual void drawPolygon(const QPoint *points, int pointCount, QPaintEngine::PolygonDrawMode mode)
virtual void drawRects(const QRectF *rects, int rectCount)
virtual void drawRects(const QRect *rects, int rectCount)
virtual void drawTextItem(const QPointF &p, const QTextItem &textItem)
virtual void drawTiledPixmap(const QRectF &rect, const QPixmap &pixmap, const QPointF &p)
virtual bool end() = 0
bool hasFeature(QPaintEngine::PaintEngineFeatures feature) const
bool isActive() const
QPaintDevice *paintDevice() const
QPainter *painter() const
void setActive(bool state)
virtual QPaintEngine::Type type() const = 0
virtual void updateState(const QPaintEngineState &state) = 0

Description détaillée

Qt fournit plusieurs implémentations prêtes à l'emploi de QPaintEngine pour les différents backends de peinture que nous prenons en charge. Le moteur de peinture principal fourni est le moteur de peinture raster, qui contient un rastériseur logiciel prenant en charge l'ensemble des fonctionnalités sur toutes les plateformes prises en charge. Il s’agit du moteur par défaut pour le dessin sur les classes basées sur ` QWidget`, par exemple sous Windows, X11 et macOS ; c’est également le moteur utilisé pour le dessin sur ` QImage ` et il sert de solution de secours pour les moteurs de dessin qui ne prennent pas en charge certaines fonctionnalités. De plus, nous fournissons des implémentations de QPaintEngine pour OpenGL (accessibles via QOpenGLWidget) et pour l’impression (ce qui permet d’utiliser QPainter pour dessiner sur un objet QPrinter ).

Si l’on souhaite utiliser QPainter pour dessiner sur un backend différent, il faut créer une sous-classe de QPaintEngine et réimplémenter toutes ses fonctions virtuelles. L’implémentation de QPaintEngine est ensuite mise à disposition en créant une sous-classe de QPaintDevice et en réimplémentant la fonction virtuelle QPaintDevice::paintEngine().

QPaintEngine est créé et géré par l'QPaintDevice qui l'a créé.

Voir également QPainter, QPaintDevice::paintEngine() et Système de peinture.

Documentation sur les types de membres

enum QPaintEngine::DirtyFlag
flags QPaintEngine::DirtyFlags

ConstanteValeurDescription
QPaintEngine::DirtyPen0x0001Le stylo est sale et doit être remplacé.
QPaintEngine::DirtyBrush0x0002Le pinceau est sale et doit être mis à jour.
QPaintEngine::DirtyBrushOrigin0x0004L'origine du pinceau est corrompue et doit être mise à jour.
QPaintEngine::DirtyFont0x0008La police est en mauvais état et doit être mise à jour.
QPaintEngine::DirtyBackground0x0010L'arrière-plan est en mauvais état et doit être mis à jour.
QPaintEngine::DirtyBackgroundMode0x0020Le mode d'arrière-plan est obsolète et doit être mis à jour.
QPaintEngine::DirtyTransform0x0040La transformation est obsolète et doit être mise à jour.
QPaintEngine::DirtyClipRegion0x0080La zone de découpe est obsolète et doit être mise à jour.
QPaintEngine::DirtyClipPath0x0100Le chemin de découpe est obsolète et doit être mis à jour.
QPaintEngine::DirtyHints0x0200Les indications de rendu sont obsolètes et doivent être mises à jour.
QPaintEngine::DirtyCompositionMode0x0400Le mode de composition est obsolète et doit être mis à jour.
QPaintEngine::DirtyClipEnabled0x0800L'activation ou la désactivation du détourage est obsolète et doit être mise à jour.
QPaintEngine::DirtyOpacity0x1000L'opacité constante a changé et doit être mise à jour dans le cadre du changement d'état dans ` QPaintEngine::updateState()`.
QPaintEngine::AllDirty0xffffÉnumération de commodité utilisée en interne.

Ces types sont utilisés par QPainter pour déclencher des mises à jour différées des différents états dans l'QPaintEngine à l'aide de QPaintEngine::updateState().

Un moteur de rendu doit mettre à jour chaque état « dirty ».

Le type `DirtyFlags` est un `typedef` pour ` QFlags<DirtyFlag>`. Il stocke une combinaison OR de valeurs `DirtyFlag`.

enum QPaintEngine::PaintEngineFeature
flags QPaintEngine::PaintEngineFeatures

Cette énumération sert à décrire les fonctionnalités ou capacités du moteur de rendu. Si une fonctionnalité n’est pas prise en charge par le moteur, QPainter s’efforcera autant que possible de l’émuler par d’autres moyens et transmettra au moteur une image en mélange alpha ( QImage ) contenant les résultats de l’émulation. Certaines fonctionnalités ne peuvent pas être émulées : AlphaBlend et PorterDuff.

ConstanteValeurDescription
QPaintEngine::AlphaBlend0x00000080Le moteur peut effectuer un mélange alpha des primitives.
QPaintEngine::Antialiasing0x00000400Le moteur peut utiliser l’anticrénelage pour améliorer l’apparence des primitives rendues.
QPaintEngine::BlendModes0x00008000Le moteur prend en charge les modes de fusion.
QPaintEngine::BrushStroke0x00000800Le moteur prend en charge le tracé de traits contenant des pinceaux en tant que remplissages, et pas seulement des couleurs unies (par exemple, une ligne en pointillés avec un dégradé d'une largeur de 2).
QPaintEngine::ConicalGradientFill0x00000040Le moteur prend en charge les remplissages en dégradé conique.
QPaintEngine::ConstantOpacity0x00001000Le moteur prend en charge la fonctionnalité fournie par la fonction ` QPainter::setOpacity()`.
QPaintEngine::LinearGradientFill0x00000010Le moteur prend en charge les remplissages en dégradé linéaire.
QPaintEngine::MaskedBrush0x00002000Le moteur est capable de rendre des pinceaux dotés d’une texture avec un canal alpha ou un masque.
QPaintEngine::ObjectBoundingModeGradients0x00010000Le moteur prend en charge nativement les dégradés en mode de coordonnées QGradient::ObjectBoundingMode. Sinon, si QPaintEngine::PatternTransform est pris en charge, les dégradés en mode de délimitation d’objet sont convertis en dégradés en mode de coordonnées QGradient::LogicalMode avec une transformation de pinceau pour le mappage des coordonnées.
QPaintEngine::PainterPaths0x00000200Le moteur prend en charge les chemins.
QPaintEngine::PaintOutsidePaintEvent0x20000000Le moteur est capable de peindre en dehors des événements de peinture.
QPaintEngine::PatternBrush0x00000008Le moteur est capable de rendre des pinceaux avec les motifs de pinceau spécifiés dans Qt::BrushStyle.
QPaintEngine::PatternTransform0x00000002Le moteur prend en charge la transformation des motifs de pinceaux.
QPaintEngine::PerspectiveTransform0x00004000Le moteur prend en charge les transformations de perspective sur les primitives.
QPaintEngine::PixmapTransform0x00000004Le moteur peut transformer des images bitmap, notamment par rotation et cisaillement.
QPaintEngine::PorterDuff0x00000100Le moteur prend en charge les opérations de Porter-Duff
QPaintEngine::PrimitiveTransform0x00000001Le moteur prend en charge la transformation des primitives de dessin.
QPaintEngine::RadialGradientFill0x00000020Le moteur prend en charge les remplissages par dégradé radial.
QPaintEngine::RasterOpModes0x00020000Le moteur prend en charge les opérations raster bit à bit.
QPaintEngine::AllFeatures0xffffffffToutes les fonctionnalités ci-dessus. Cette valeur d'énumération est généralement utilisée comme masque de bits.

Le type `PaintEngineFeatures` est une définition de type pour `QFlags<PaintEngineFeature>`. Il stocke une combinaison OR de valeurs `PaintEngineFeature`.

enum QPaintEngine::PolygonDrawMode

ConstanteValeurDescription
QPaintEngine::OddEvenMode0Le polygone doit être tracé en utilisant la règle de remplissage « OddEven ».
QPaintEngine::WindingMode1Le polygone doit être tracé selon la règle de remplissage « Winding ».
QPaintEngine::ConvexMode2Le polygone est un polygone convexe et peut être tracé à l'aide d'algorithmes spécialisés lorsqu'ils sont disponibles.
QPaintEngine::PolylineMode3Seul le contour du polygone doit être tracé.

enum QPaintEngine::Type

ConstanteValeurDescription
QPaintEngine::X110 
QPaintEngine::Windows1 
QPaintEngine::MacPrinter4 
QPaintEngine::CoreGraphics3Quartz2D (CoreGraphics) de macOS
QPaintEngine::QuickDraw2QuickDraw de macOS
QPaintEngine::QWindowSystem5Qt pour Linux embarqué
QPaintEngine::OpenGL6 
QPaintEngine::Picture7QPicture format
QPaintEngine::SVG8Graphiques vectoriels adaptables (SVG) au format XML
QPaintEngine::Raster9 
QPaintEngine::Direct3D10Windows uniquement, moteur basé sur Direct3D
QPaintEngine::Pdf11Format de document portable
QPaintEngine::OpenVG12 
QPaintEngine::User50Premier identifiant de type d'utilisateur
QPaintEngine::MaxUser100Dernier identifiant de type d'utilisateur
QPaintEngine::OpenGL213 
QPaintEngine::PaintBuffer14 
QPaintEngine::Blitter15 
QPaintEngine::Direct2D16Moteur basé sur Direct2D, sous Windows uniquement

Documentation des fonctions membres

[explicit] QPaintEngine::QPaintEngine(QPaintEngine::PaintEngineFeatures caps = PaintEngineFeatures())

Crée un moteur de rendu doté des fonctionnalités spécifiées par caps.

[virtual noexcept] QPaintEngine::~QPaintEngine()

Cela détruit le moteur de rendu.

[pure virtual] bool QPaintEngine::begin(QPaintDevice *pdev)

Réimplémentez cette fonction pour initialiser votre moteur de dessin lorsque le dessin doit commencer sur le périphérique de dessin pdev. Renvoyez « true » si l'initialisation a réussi ; sinon, renvoyez « false ».

Voir également end() et isActive().

[virtual] void QPaintEngine::drawEllipse(const QRectF &rect)

Réimplémentez cette fonction pour tracer la plus grande ellipse pouvant être contenue dans le rectangle rect.

L’implémentation par défaut appelle ` drawPolygon()`.

[virtual] void QPaintEngine::drawEllipse(const QRect &rect)

L'implémentation par défaut de cette fonction appelle la version à virgule flottante de cette fonction

Il s'agit d'une fonction surchargée.

[virtual] void QPaintEngine::drawImage(const QRectF &rectangle, const QImage &image, const QRectF &sr, Qt::ImageConversionFlags flags = Qt::AutoColor)

Réimplémentez cette fonction pour dessiner la partie de l'image spécifiée par le rectangle sr dans l'rectangle donné, en utilisant les indicateurs de conversion fournis flags, afin de la convertir en image pixmap.

[virtual] void QPaintEngine::drawLines(const QLineF *lines, int lineCount)

L'implémentation par défaut divise la liste des lignes contenue dans ` lines ` en ` lineCount ` appels distincts à ` drawPath()` ou ` drawPolygon()`, selon les fonctionnalités du moteur de rendu.

[virtual] void QPaintEngine::drawLines(const QLine *lines, int lineCount)

L'implémentation par défaut convertit les premières lignes lineCount de lines en QLineF et appelle la version à virgule flottante de cette fonction.

Il s'agit d'une fonction surchargée.

[virtual] void QPaintEngine::drawPath(const QPainterPath &path)

L'implémentation par défaut ignore la méthode ` path ` et ne fait rien.

[pure virtual] void QPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr)

Réimplémentez cette fonction pour tracer la partie de l'pm spécifiée par le rectangle sr dans l'r donné.

[virtual] void QPaintEngine::drawPoints(const QPoint *points, int pointCount)

Dessine les premiers points de type ` pointCount ` dans le tampon points

L'implémentation par défaut convertit les premiers QPoints de type « pointCount » dans « points » en QPointFs et appelle la version à virgule flottante de la fonction drawPoints.

[virtual] void QPaintEngine::drawPoints(const QPointF *points, int pointCount)

Dessine les premiers points de l'pointCount e dans la mémoire tampon points

[virtual] void QPaintEngine::drawPolygon(const QPointF *points, int pointCount, QPaintEngine::PolygonDrawMode mode)

Réimplémentez cette fonction virtuelle pour dessiner le polygone défini par les premiers points de l'pointCount s dans ` points`, en utilisant le mode ` mode`.

Remarque : au moins l'une des fonctions drawPolygon() doit être réimplémentée.

[virtual] void QPaintEngine::drawPolygon(const QPoint *points, int pointCount, QPaintEngine::PolygonDrawMode mode)

Réimplémentez cette fonction virtuelle pour dessiner le polygone défini par les premiers points de l'pointCount s dans points, en utilisant le mode mode.

Remarque : au moins l'une des fonctions drawPolygon() doit être réimplémentée.

Il s'agit d'une fonction surchargée.

[virtual] void QPaintEngine::drawRects(const QRectF *rects, int rectCount)

Dessine les premiers rectangles de type « rectCount » dans le tampon « rects ». L'implémentation par défaut de cette fonction appelle « drawPath() » ou « drawPolygon() » selon les fonctionnalités du moteur de rendu.

[virtual] void QPaintEngine::drawRects(const QRect *rects, int rectCount)

L'implémentation par défaut convertit les rectangles de type « rectCount » présents dans le tampon rects en « QRectF » et appelle la version en virgule flottante de cette fonction.

Il s'agit d'une fonction surchargée.

[virtual] void QPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem)

Cette fonction dessine l'élément de texte « textItem » à la position p. L'implémentation par défaut de cette fonction convertit le texte en un « QPainterPath » et trace le chemin obtenu.

[virtual] void QPaintEngine::drawTiledPixmap(const QRectF &rect, const QPixmap &pixmap, const QPointF &p)

Réimplémentez cette fonction pour dessiner l'pixmap dans l'rect donné, en commençant à l'p donné. L'image sera dessinée de manière répétée jusqu'à ce que l'rect soit rempli.

[pure virtual] bool QPaintEngine::end()

Réimplémentez cette fonction pour terminer le dessin sur le périphérique de dessin actuel. Renvoyez « true » si le dessin s'est terminé avec succès ; sinon, renvoyez « false ».

Voir également begin() et isActive().

bool QPaintEngine::hasFeature(QPaintEngine::PaintEngineFeatures feature) const

Renvoie « true » si le moteur de rendu prend en charge l’ feature spécifiée ; sinon, renvoie « false ».

bool QPaintEngine::isActive() const

Renvoie « true » si le moteur de rendu est en cours d'affichage ; sinon, renvoie « false ».

Voir également setActive().

QPaintDevice *QPaintEngine::paintDevice() const

Renvoie le périphérique sur lequel ce moteur effectue le rendu, si celui-ci est actif ; sinon, renvoie ` nullptr`.

QPainter *QPaintEngine::painter() const

Renvoie l'objet « painter » du moteur de dessin.

void QPaintEngine::setActive(bool state)

Définit l'état actif du moteur de rendu sur « state ».

Voir également isActive().

[pure virtual] QPaintEngine::Type QPaintEngine::type() const

Réimplémentez cette fonction pour qu'elle renvoie l'Type s du moteur de rendu.

[pure virtual] void QPaintEngine::updateState(const QPaintEngineState &state)

Réimplémentez cette fonction pour mettre à jour l'état d'un moteur de rendu.

Une fois implémentée, cette fonction est chargée de vérifier l’ state e actuelle du moteur de rendu et de mettre à jour les propriétés qui ont été modifiées. Utilisez la fonction QPaintEngineState::state() pour déterminer quelles propriétés doivent être mises à jour, puis utilisez la fonction get function correspondante pour récupérer les valeurs actuelles de ces propriétés.

Voir également QPaintEngineState.

© 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.