QPaintEngine Class
La classe QPaintEngine fournit une définition abstraite de la manière dont QPainter dessine sur un périphérique donné sur une plate-forme donnée. 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 de QPaintEngine pour les différents moteurs de peinture que nous supportons. Le principal moteur de peinture fourni est le moteur de peinture matricielle, qui contient un rasterizer logiciel prenant en charge l'ensemble des fonctionnalités sur toutes les plates-formes prises en charge. C'est le moteur par défaut pour peindre sur les classes basées sur QWidget, par exemple sous Windows, X11 et macOS, c'est le moteur dorsal pour peindre sur QImage et il est utilisé comme solution de repli pour les moteurs de peinture qui ne prennent pas en charge une certaine capacité. En outre, nous fournissons des implémentations de QPaintEngine pour OpenGL (accessibles via QOpenGLWidget) et l'impression (qui permet d'utiliser QPainter pour dessiner sur un objet QPrinter ).
Si l'on veut utiliser QPainter pour dessiner sur un backend différent, il faut sous-classer QPaintEngine et réimplémenter toutes ses fonctions virtuelles. L'implémentation de QPaintEngine est ensuite rendue disponible en sous-classant QPaintDevice et en réimplémentant la fonction virtuelle QPaintDevice::paintEngine().
QPaintEngine est créé et détenu par le site QPaintDevice qui l'a créé.
Voir également QPainter, QPaintDevice::paintEngine(), et Paint System.
Documentation des types de membres
enum QPaintEngine::DirtyFlag
flags QPaintEngine::DirtyFlags
| Constante | Valeur | Description des drapeaux |
|---|---|---|
QPaintEngine::DirtyPen | 0x0001 | Le stylo est sale et doit être mis à jour. |
QPaintEngine::DirtyBrush | 0x0002 | Le pinceau est sale et doit être mis à jour. |
QPaintEngine::DirtyBrushOrigin | 0x0004 | L'origine du pinceau est sale et doit être mise à jour. |
QPaintEngine::DirtyFont | 0x0008 | La police est sale et doit être mise à jour. |
QPaintEngine::DirtyBackground | 0x0010 | L'arrière-plan est sale et doit être mis à jour. |
QPaintEngine::DirtyBackgroundMode | 0x0020 | Le mode d'arrière-plan est sale et doit être mis à jour. |
QPaintEngine::DirtyTransform | 0x0040 | La transformation est sale et doit être mise à jour. |
QPaintEngine::DirtyClipRegion | 0x0080 | La région du clip est sale et doit être mise à jour. |
QPaintEngine::DirtyClipPath | 0x0100 | Le chemin du clip est sale et doit être mis à jour. |
QPaintEngine::DirtyHints | 0x0200 | Les indices de rendu sont sales et doivent être mis à jour. |
QPaintEngine::DirtyCompositionMode | 0x0400 | Le mode de composition est sale et doit être mis à jour. |
QPaintEngine::DirtyClipEnabled | 0x0800 | L'activation ou non de l'écrêtage est sale 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 | Enum de commodité utilisé en interne. |
Ces types sont utilisés par QPainter pour déclencher des mises à jour paresseuses des différents états dans QPaintEngine à l'aide de QPaintEngine::updateState().
Un moteur de peinture doit mettre à jour chaque état sale.
Le type DirtyFlags est un typedef pour QFlags<DirtyFlag>. Il stocke une combinaison OU de valeurs DirtyFlag.
enum QPaintEngine::PaintEngineFeature
flags QPaintEngine::PaintEngineFeatures
Cette énumération est utilisée pour décrire les caractéristiques ou les capacités du moteur de peinture. Si une fonctionnalité n'est pas prise en charge par le moteur, QPainter s'efforcera d'émuler cette fonctionnalité par d'autres moyens et transmettra au moteur un mélange alpha QImage avec les résultats émulés. Certaines fonctionnalités ne peuvent pas être émulées : AlphaBlend et PorterDuff.
| Constante | Valeur | Description de la constante |
|---|---|---|
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 les traits de dessin contenant des brosses comme remplissage, et pas seulement des couleurs unies (par exemple, une ligne de dégradé en pointillé de largeur 2). |
QPaintEngine::ConicalGradientFill | 0x00000040 | Le moteur prend en charge les remplissages de dégradés coniques. |
QPaintEngine::ConstantOpacity | 0x00001000 | Le moteur prend en charge la fonctionnalité fournie par QPainter::setOpacity(). |
QPaintEngine::LinearGradientFill | 0x00000010 | Le moteur prend en charge les remplissages de dégradés linéaires. |
QPaintEngine::MaskedBrush | 0x00002000 | Le moteur est capable de rendre les brosses qui ont une texture avec un canal alpha ou un masque. |
QPaintEngine::ObjectBoundingModeGradients | 0x00010000 | Le moteur prend en charge en mode natif les dégradés avec le mode de coordonnées QGradient::ObjectBoundingMode. Sinon, si QPaintEngine::PatternTransform est pris en charge, les dégradés du mode de délimitation des objets sont convertis en dégradés avec le mode de coordonnées QGradient::LogicalMode et une transformation de brosse 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 les brosses avec les motifs de brosse spécifiés dans Qt::BrushStyle. |
QPaintEngine::PatternTransform | 0x00000002 | Le moteur prend en charge la transformation des motifs de brosse. |
QPaintEngine::PerspectiveTransform | 0x00004000 | Le moteur permet d'effectuer des transformations de perspective sur les primitives. |
QPaintEngine::PixmapTransform | 0x00000004 | Le moteur peut transformer les pixmaps, y compris la rotation et le cisaillement. |
QPaintEngine::PorterDuff | 0x00000100 | Le moteur prend en charge les opérations 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 gradient radial. |
QPaintEngine::RasterOpModes | 0x00020000 | Le moteur prend en charge les opérations matricielles par bits. |
QPaintEngine::AllFeatures | 0xffffffff | Toutes les caractéristiques ci-dessus. Cette valeur de l'énumération est généralement utilisée comme masque de bits. |
Le type PaintEngineFeatures est un typedef pour QFlags<PaintEngineFeature>. Il stocke une combinaison OU de valeurs de PaintEngineFeatures.
enum QPaintEngine::PolygonDrawMode
| Constante | Valeur | Description |
|---|---|---|
QPaintEngine::OddEvenMode | 0 | Le polygone doit être dessiné en utilisant la règle de remplissage OddEven. |
QPaintEngine::WindingMode | 1 | Le polygone doit être dessiné en utilisant la règle de remplissage Winding. |
QPaintEngine::ConvexMode | 2 | Le polygone est un polygone convexe et peut être dessiné à l'aide d'algorithmes spécialisés lorsqu'ils sont disponibles. |
QPaintEngine::PolylineMode | 3 | Seul le contour du polygone doit être dessiné. |
enum QPaintEngine::Type
| Constante | Valeur | Description de Quartz2D |
|---|---|---|
QPaintEngine::X11 | 0 | |
QPaintEngine::Windows | 1 | |
QPaintEngine::MacPrinter | 4 | |
QPaintEngine::CoreGraphics | 3 | Quartz2D de macOS (CoreGraphics) |
QPaintEngine::QuickDraw | 2 | QuickDraw de macOS |
QPaintEngine::QWindowSystem | 5 | Qt pour Linux embarqué |
QPaintEngine::OpenGL | 6 | |
QPaintEngine::Picture | 7 | QPicture format |
QPaintEngine::SVG | 8 | Scalable Vector Graphics 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 | ID du premier type d'utilisateur |
QPaintEngine::MaxUser | 100 | ID du dernier type d'utilisateur |
QPaintEngine::OpenGL2 | 13 | |
QPaintEngine::PaintBuffer | 14 | |
QPaintEngine::Blitter | 15 | |
QPaintEngine::Direct2D | 16 | Windows uniquement, moteur basé sur Direct2D |
Documentation des fonctions membres
[explicit] QPaintEngine::QPaintEngine(QPaintEngine::PaintEngineFeatures caps = PaintEngineFeatures())
Crée un moteur de peinture avec le jeu de caractéristiques spécifié par caps.
[virtual noexcept] QPaintEngine::~QPaintEngine()
Détruit le moteur de peinture.
[pure virtual] bool QPaintEngine::begin(QPaintDevice *pdev)
Réimplémentez cette fonction pour initialiser votre moteur de peinture lorsque la peinture doit commencer sur le dispositif de peinture pdev. Elle renvoie la valeur true si l'initialisation a réussi ; sinon, elle renvoie la valeur false.
Voir également end() et isActive().
[virtual] void QPaintEngine::drawEllipse(const QRectF &rect)
Réimplémentez cette fonction pour dessiner 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 en 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émenter cette fonction pour dessiner la partie de image spécifiée par le rectangle sr dans rectangle en utilisant les drapeaux de conversion flags, pour la convertir en pixmap.
[virtual] void QPaintEngine::drawLines(const QLineF *lines, int lineCount)
L'implémentation par défaut divise la liste des lignes dans lines en lineCount appels distincts à drawPath() ou drawPolygon() en fonction de l'ensemble des caractéristiques du moteur de peinture.
[virtual] void QPaintEngine::drawLines(const QLine *lines, int lineCount)
L'implémentation par défaut convertit les premières lignes de lineCount dans lines en QLineF et appelle la version en 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 le site path et ne fait rien.
[pure virtual] void QPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr)
Réimplémenter cette fonction pour dessiner la partie de pm spécifiée par le rectangle sr dans le r donné.
[virtual] void QPaintEngine::drawPoints(const QPoint *points, int pointCount)
Dessine les premiers points pointCount de la mémoire tampon. points
L'implémentation par défaut convertit les premiers pointCount QPoints de points en QPointFs et appelle la version en virgule flottante de drawPoints.
[virtual] void QPaintEngine::drawPoints(const QPointF *points, int pointCount)
Dessine les premiers pointCount points de la mémoire tampon points
[virtual] void QPaintEngine::drawPolygon(const QPointF *points, int pointCount, QPaintEngine::PolygonDrawMode mode)
Réimplémenter cette fonction virtuelle pour dessiner le polygone défini par les pointCount premiers points de points, en utilisant le mode mode.
Remarque : au moins une des fonctions drawPolygon() doit être réimplémentée.
[virtual] void QPaintEngine::drawPolygon(const QPoint *points, int pointCount, QPaintEngine::PolygonDrawMode mode)
Réimplémenter cette fonction virtuelle pour dessiner le polygone défini par les pointCount premiers points de points, en utilisant le mode mode.
Remarque : au moins 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 rectCount rectangles dans le tampon rects. L'implémentation par défaut de cette fonction appelle drawPath() ou drawPolygon() en fonction des caractéristiques du moteur de peinture.
[virtual] void QPaintEngine::drawRects(const QRect *rects, int rectCount)
L'implémentation par défaut convertit les premiers rectangles rectCount de la mémoire 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 QPainterPath et peint le chemin résultant.
[virtual] void QPaintEngine::drawTiledPixmap(const QRectF &rect, const QPixmap &pixmap, const QPointF &p)
Réimplémentez cette fonction pour dessiner le pixmap dans le rect donné, en commençant par le p donné. La pixmap sera dessinée à plusieurs reprises jusqu'à ce que le site rect soit rempli.
[pure virtual] bool QPaintEngine::end()
Réimplémente cette fonction pour terminer la peinture sur le dispositif de peinture actuel. Elle renvoie la valeur true si la peinture a été terminée avec succès, sinon elle renvoie la valeur false.
Voir également begin() et isActive().
bool QPaintEngine::hasFeature(QPaintEngine::PaintEngineFeatures feature) const
Renvoie true si le moteur de peinture prend en charge l'élément spécifié feature; sinon, renvoie false.
bool QPaintEngine::isActive() const
Renvoie true si le moteur de peinture est en train de dessiner, sinon renvoie false.
Voir également setActive().
QPaintDevice *QPaintEngine::paintDevice() const
Renvoie le périphérique sur lequel ce moteur est en train de peindre, si la peinture est active ; sinon, renvoie nullptr.
QPainter *QPaintEngine::painter() const
Renvoie le peintre du moteur de peinture.
void QPaintEngine::setActive(bool state)
Définit l'état actif du moteur de peinture à state.
Voir également isActive().
[pure virtual] QPaintEngine::Type QPaintEngine::type() const
Réimplémenter cette fonction pour renvoyer le moteur de peinture Type.
[pure virtual] void QPaintEngine::updateState(const QPaintEngineState &state)
Réimplémentez cette fonction pour mettre à jour l'état d'un moteur de peinture.
Lorsqu'elle est mise en œuvre, cette fonction est chargée de vérifier l'état actuel du moteur de peinture state et de mettre à jour les propriétés qui sont modifiées. Utilisez la fonction QPaintEngineState::state() pour déterminer les propriétés qui doivent être mises à jour, puis utilisez la fonction get function correspondante pour récupérer les valeurs actuelles des propriétés données.
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.