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 |
- Liste de tous les membres, y compris les membres hérités
- QPaintEngine fait partie des classes de peinture.
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
| Constante | Valeur | Description |
|---|---|---|
QPaintEngine::DirtyPen | 0x0001 | Le stylo est sale et doit être remplacé. |
QPaintEngine::DirtyBrush | 0x0002 | Le pinceau est sale et doit être mis à jour. |
QPaintEngine::DirtyBrushOrigin | 0x0004 | L'origine du pinceau est corrompue et doit être mise à jour. |
QPaintEngine::DirtyFont | 0x0008 | La police est en mauvais état et doit être mise à jour. |
QPaintEngine::DirtyBackground | 0x0010 | L'arrière-plan est en mauvais état et doit être mis à jour. |
QPaintEngine::DirtyBackgroundMode | 0x0020 | Le mode d'arrière-plan est obsolète et doit être mis à jour. |
QPaintEngine::DirtyTransform | 0x0040 | La transformation est obsolète et doit être mise à jour. |
QPaintEngine::DirtyClipRegion | 0x0080 | La zone de découpe est obsolète et doit être mise à jour. |
QPaintEngine::DirtyClipPath | 0x0100 | Le chemin de découpe est obsolète et doit être mis à jour. |
QPaintEngine::DirtyHints | 0x0200 | Les indications de rendu sont obsolètes et doivent être mises à jour. |
QPaintEngine::DirtyCompositionMode | 0x0400 | Le mode de composition est obsolète et doit être mis à jour. |
QPaintEngine::DirtyClipEnabled | 0x0800 | L'activation ou la désactivation du détourage est obsolète et doit être mise à jour. |
QPaintEngine::DirtyOpacity | 0x1000 | L'opacité constante a changé et doit être mise à jour dans le cadre du changement d'état dans ` QPaintEngine::updateState()`. |
QPaintEngine::AllDirty | 0xffff | É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.
| Constante | Valeur | Description |
|---|---|---|
QPaintEngine::AlphaBlend | 0x00000080 | Le moteur peut effectuer un mélange alpha des primitives. |
QPaintEngine::Antialiasing | 0x00000400 | Le moteur peut utiliser l’anticrénelage pour améliorer l’apparence des primitives rendues. |
QPaintEngine::BlendModes | 0x00008000 | Le moteur prend en charge les modes de fusion. |
QPaintEngine::BrushStroke | 0x00000800 | Le 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::ConicalGradientFill | 0x00000040 | Le moteur prend en charge les remplissages en dégradé conique. |
QPaintEngine::ConstantOpacity | 0x00001000 | Le moteur prend en charge la fonctionnalité fournie par la fonction ` QPainter::setOpacity()`. |
QPaintEngine::LinearGradientFill | 0x00000010 | Le moteur prend en charge les remplissages en dégradé linéaire. |
QPaintEngine::MaskedBrush | 0x00002000 | Le moteur est capable de rendre des pinceaux dotés d’une texture avec un canal alpha ou un masque. |
QPaintEngine::ObjectBoundingModeGradients | 0x00010000 | Le 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::PainterPaths | 0x00000200 | Le moteur prend en charge les chemins. |
QPaintEngine::PaintOutsidePaintEvent | 0x20000000 | Le moteur est capable de peindre en dehors des événements de peinture. |
QPaintEngine::PatternBrush | 0x00000008 | Le moteur est capable de rendre des pinceaux avec les motifs de pinceau spécifiés dans Qt::BrushStyle. |
QPaintEngine::PatternTransform | 0x00000002 | Le moteur prend en charge la transformation des motifs de pinceaux. |
QPaintEngine::PerspectiveTransform | 0x00004000 | Le moteur prend en charge les transformations de perspective sur les primitives. |
QPaintEngine::PixmapTransform | 0x00000004 | Le moteur peut transformer des images bitmap, notamment par rotation et cisaillement. |
QPaintEngine::PorterDuff | 0x00000100 | Le moteur prend en charge les opérations de Porter-Duff |
QPaintEngine::PrimitiveTransform | 0x00000001 | Le moteur prend en charge la transformation des primitives de dessin. |
QPaintEngine::RadialGradientFill | 0x00000020 | Le moteur prend en charge les remplissages par dégradé radial. |
QPaintEngine::RasterOpModes | 0x00020000 | Le moteur prend en charge les opérations raster bit à bit. |
QPaintEngine::AllFeatures | 0xffffffff | Toutes 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
| Constante | Valeur | Description |
|---|---|---|
QPaintEngine::OddEvenMode | 0 | Le polygone doit être tracé en utilisant la règle de remplissage « OddEven ». |
QPaintEngine::WindingMode | 1 | Le polygone doit être tracé selon la règle de remplissage « Winding ». |
QPaintEngine::ConvexMode | 2 | Le polygone est un polygone convexe et peut être tracé à l'aide d'algorithmes spécialisés lorsqu'ils sont disponibles. |
QPaintEngine::PolylineMode | 3 | Seul le contour du polygone doit être tracé. |
enum QPaintEngine::Type
| Constante | Valeur | Description |
|---|---|---|
QPaintEngine::X11 | 0 | |
QPaintEngine::Windows | 1 | |
QPaintEngine::MacPrinter | 4 | |
QPaintEngine::CoreGraphics | 3 | Quartz2D (CoreGraphics) de macOS |
QPaintEngine::QuickDraw | 2 | QuickDraw de macOS |
QPaintEngine::QWindowSystem | 5 | Qt pour Linux embarqué |
QPaintEngine::OpenGL | 6 | |
QPaintEngine::Picture | 7 | QPicture format |
QPaintEngine::SVG | 8 | Graphiques vectoriels adaptables (SVG) au format XML |
QPaintEngine::Raster | 9 | |
QPaintEngine::Direct3D | 10 | Windows uniquement, moteur basé sur Direct3D |
QPaintEngine::Pdf | 11 | Format de document portable |
QPaintEngine::OpenVG | 12 | |
QPaintEngine::User | 50 | Premier identifiant de type d'utilisateur |
QPaintEngine::MaxUser | 100 | Dernier identifiant de type d'utilisateur |
QPaintEngine::OpenGL2 | 13 | |
QPaintEngine::PaintBuffer | 14 | |
QPaintEngine::Blitter | 15 | |
QPaintEngine::Direct2D | 16 | Moteur 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.