En esta página

QPaintEngine Class

La clase QPaintEngine proporciona una definición abstracta de cómo QPainter dibuja en un dispositivo determinado en una plataforma determinada. Más...

Cabecera: #include <QPaintEngine>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

Tipos Públicos

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 }

Funciones Públicas

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

Descripción Detallada

Qt proporciona varias implementaciones prefabricadas de QPaintEngine para los diferentes backends de pintado que soportamos. El principal motor de pintura proporcionado es el motor de pintura raster, que contiene un rasterizador de software que soporta el conjunto completo de características en todas las plataformas soportadas. Es el predeterminado para pintar en clases basadas en QWidget, por ejemplo, en Windows, X11 y macOS, es el backend para pintar en QImage y se utiliza como fallback para motores de pintura que no soportan una determinada capacidad. Además, proporcionamos implementaciones de QPaintEngine para OpenGL (accesibles a través de QOpenGLWidget) e impresión (que permite utilizar QPainter para dibujar sobre un objeto QPrinter ).

Si uno quiere usar QPainter para dibujar en un backend diferente, debe subclasificar QPaintEngine y reimplementar todas sus funciones virtuales. La implementación de QPaintEngine se hace disponible subclasificando QPaintDevice y reimplementando la función virtual QPaintDevice::paintEngine().

QPaintEngine es creado y es propiedad de QPaintDevice que lo creó.

Ver también QPainter, QPaintDevice::paintEngine(), y Sistema Paint.

Documentación de tipos de miembros

enum QPaintEngine::DirtyFlag
flags QPaintEngine::DirtyFlags

ConstanteValorDescripción
QPaintEngine::DirtyPen0x0001El lápiz está sucio y necesita ser actualizado.
QPaintEngine::DirtyBrush0x0002El pincel está sucio y necesita ser actualizado.
QPaintEngine::DirtyBrushOrigin0x0004El origen del pincel está sucio y necesita ser actualizado.
QPaintEngine::DirtyFont0x0008La fuente está sucia y necesita ser actualizada.
QPaintEngine::DirtyBackground0x0010El fondo está sucio y necesita ser actualizado.
QPaintEngine::DirtyBackgroundMode0x0020El modo de fondo está sucio y necesita ser actualizado.
QPaintEngine::DirtyTransform0x0040La transformación está sucia y necesita ser actualizada.
QPaintEngine::DirtyClipRegion0x0080La región de clip está sucia y necesita ser actualizada.
QPaintEngine::DirtyClipPath0x0100La ruta del clip está sucia y necesita ser actualizada.
QPaintEngine::DirtyHints0x0200El render hints está sucio y necesita ser actualizado.
QPaintEngine::DirtyCompositionMode0x0400El modo de composición está sucio y necesita ser actualizado.
QPaintEngine::DirtyClipEnabled0x0800Si el recorte está activado o no está sucio y necesita ser actualizado.
QPaintEngine::DirtyOpacity0x1000La constante de opacidad ha cambiado y necesita ser actualizada como parte del cambio de estado en QPaintEngine::updateState().
QPaintEngine::AllDirty0xffffEnum de conveniencia utilizado internamente.

Estos tipos son utilizados por QPainter para desencadenar actualizaciones perezosas de los distintos estados en QPaintEngine utilizando QPaintEngine::updateState().

Un motor de pintura debe actualizar cada estado sucio.

El tipo DirtyFlags es un typedef para QFlags<DirtyFlag>. Almacena una combinación OR de valores DirtyFlag.

enum QPaintEngine::PaintEngineFeature
flags QPaintEngine::PaintEngineFeatures

Este enum se utiliza para describir las características o capacidades que tiene el motor de pintura. Si una característica no es soportada por el motor, QPainter hará el mejor esfuerzo para emular esa característica a través de otros medios y pasar un alpha blended QImage al motor con los resultados emulados. Algunas funciones no pueden emularse: AlphaBlend y PorterDuff.

ConstanteValorDescripción
QPaintEngine::AlphaBlend0x00000080El motor puede mezclar primitivas alfa.
QPaintEngine::Antialiasing0x00000400El motor puede usar antialiasing para mejorar la apariencia de las primitivas renderizadas.
QPaintEngine::BlendModes0x00008000El motor admite modos de mezcla.
QPaintEngine::BrushStroke0x00000800El motor admite trazos de dibujo que contengan pinceles como rellenos, no sólo colores sólidos (por ejemplo, una línea de gradiente discontinua de anchura 2).
QPaintEngine::ConicalGradientFill0x00000040El motor admite rellenos de degradado cónico.
QPaintEngine::ConstantOpacity0x00001000El motor admite la función proporcionada por QPainter::setOpacity().
QPaintEngine::LinearGradientFill0x00000010El motor admite rellenos de degradado lineal.
QPaintEngine::MaskedBrush0x00002000El motor es capaz de renderizar pinceles que tengan una textura con un canal alfa o una máscara.
QPaintEngine::ObjectBoundingModeGradients0x00010000El motor tiene soporte nativo para gradientes con modo de coordenadas QGradient::ObjectBoundingMode. En caso contrario, si QPaintEngine::PatternTransform está soportado, los degradados del modo límite del objeto se convierten en degradados con el modo de coordenadas QGradient::LogicalMode y una transformación de pincel para el mapeado de coordenadas.
QPaintEngine::PainterPaths0x00000200El motor soporta trazados.
QPaintEngine::PaintOutsidePaintEvent0x20000000El motor es capaz de pintar fuera de los eventos de pintura.
QPaintEngine::PatternBrush0x00000008El motor es capaz de renderizar pinceles con los patrones de pincel especificados en Qt::BrushStyle.
QPaintEngine::PatternTransform0x00000002El motor tiene soporte para transformar patrones de pincel.
QPaintEngine::PerspectiveTransform0x00004000El motor tiene soporte para realizar transformaciones de perspectiva en primitivas.
QPaintEngine::PixmapTransform0x00000004El motor puede transformar pixmaps, incluyendo rotación y cizallamiento.
QPaintEngine::PorterDuff0x00000100El motor admite operaciones Porter-Duff.
QPaintEngine::PrimitiveTransform0x00000001El motor admite la transformación de primitivas de dibujo.
QPaintEngine::RadialGradientFill0x00000020El motor admite rellenos de degradado radial.
QPaintEngine::RasterOpModes0x00020000El motor admite operaciones de trama por bits.
QPaintEngine::AllFeatures0xffffffffTodas las características anteriores. Este valor enum se utiliza normalmente como máscara de bits.

El tipo PaintEngineFeatures es un typedef para QFlags<PaintEngineFeature>. Almacena una combinación OR de valores PaintEngineFeature.

enum QPaintEngine::PolygonDrawMode

ConstanteValorDescripción
QPaintEngine::OddEvenMode0El polígono debe ser dibujado usando la regla de relleno OddEven.
QPaintEngine::WindingMode1El polígono debe ser dibujado usando la regla de relleno Winding.
QPaintEngine::ConvexMode2El polígono es un polígono convexo y puede dibujarse utilizando algoritmos especializados cuando estén disponibles.
QPaintEngine::PolylineMode3Sólo debe dibujarse el contorno del polígono.

enum QPaintEngine::Type

ConstanteValorDescripción
QPaintEngine::X110
QPaintEngine::Windows1
QPaintEngine::MacPrinter4
QPaintEngine::CoreGraphics3Quartz2D de macOS (CoreGraphics)
QPaintEngine::QuickDraw2QuickDraw de macOS
QPaintEngine::QWindowSystem5Qt para Linux integrado
QPaintEngine::OpenGL6
QPaintEngine::Picture7QPicture formato
QPaintEngine::SVG8Formato XML de gráficos vectoriales escalables
QPaintEngine::Raster9
QPaintEngine::Direct3D10Sólo Windows, motor basado en Direct3D
QPaintEngine::Pdf11Formato de documento portátil
QPaintEngine::OpenVG12
QPaintEngine::User50ID del primer tipo de usuario
QPaintEngine::MaxUser100ID del último tipo de usuario
QPaintEngine::OpenGL213
QPaintEngine::PaintBuffer14
QPaintEngine::Blitter15
QPaintEngine::Direct2D16Sólo Windows, motor basado en Direct2D

Documentación de las funciones miembro

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

Crea un motor de pintura con el conjunto de características especificado en caps.

[virtual noexcept] QPaintEngine::~QPaintEngine()

Destruye el motor de pintura.

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

Reimplemente esta función para inicializar su motor de pintura cuando la pintura vaya a comenzar en el dispositivo de pintura pdev. Devuelve true si la inicialización se ha realizado correctamente; en caso contrario devuelve false.

Véase también end() y isActive().

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

Reimplemente esta función para dibujar la elipse más grande que pueda ser contenida dentro del rectángulo rect.

La implementación por defecto llama a drawPolygon().

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

La implementación por defecto de esta función llama a la versión en coma flotante de esta función

Se trata de una función sobrecargada.

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

Reimplemente esta función para dibujar la parte del image especificada por el rectángulo sr en el rectangle dado usando las banderas de conversión dadas flags, para convertirlo en un pixmap.

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

La implementación por defecto divide la lista de líneas en lines en lineCount llamadas separadas a drawPath() o drawPolygon() dependiendo del conjunto de características del motor de pintura.

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

La implementación por defecto convierte las primeras líneas de lineCount en lines a QLineF y llama a la versión en coma flotante de esta función.

Se trata de una función sobrecargada.

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

La implementación por defecto ignora path y no hace nada.

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

Reimplemente esta función para dibujar la parte de pm especificada por el rectángulo sr en el r dado.

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

Dibuja los primeros pointCount puntos en el buffer. points

La implementación por defecto convierte los primeros pointCount QPoints en points a QPointFs y llama a la versión en coma flotante de drawPoints.

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

Dibuja los primeros pointCount puntos en el buffer points

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

Reimplemente esta función virtual para dibujar el polígono definido por los pointCount primeros puntos en points, utilizando el modo mode.

Nota: Al menos una de las funciones drawPolygon() debe ser reimplementada.

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

Reimplemente esta función virtual para dibujar el polígono definido por los pointCount primeros puntos en points, utilizando el modo mode.

Nota: Al menos una de las funciones drawPolygon() debe ser reimplementada.

Se trata de una función sobrecargada.

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

Dibuja los primeros rectCount rectángulos en el buffer rects. La implementación por defecto de esta función llama a drawPath() o drawPolygon() dependiendo del conjunto de características del motor de pintura.

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

La implementación por defecto convierte los primeros rectCount rectángulos en el buffer rects a un QRectF y llama a la versión en coma flotante de esta función.

Se trata de una función sobrecargada.

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

Esta función dibuja el elemento de texto textItem en la posición p. La implementación por defecto de esta función convierte el texto en un QPainterPath y pinta el trazado resultante.

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

Reimplemente esta función para dibujar el pixmap en el rect dado, comenzando en el p dado. El mapa de píxeles se dibujará repetidamente hasta que se llene rect.

[pure virtual] bool QPaintEngine::end()

Reimplemente esta función para terminar de pintar en el dispositivo de pintura actual. Devuelve true si la pintura ha finalizado con éxito; en caso contrario devuelve false.

Véase también begin() y isActive().

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

Devuelve true si el motor de pintura admite la opción especificada feature; en caso contrario devuelve false.

bool QPaintEngine::isActive() const

Devuelve true si el motor de pintura está dibujando activamente; en caso contrario devuelve false.

Véase también setActive().

QPaintDevice *QPaintEngine::paintDevice() const

Devuelve el dispositivo en el que este motor está pintando, si la pintura está activa; de lo contrario devuelve nullptr.

QPainter *QPaintEngine::painter() const

Devuelve el pintor del motor de pintura.

void QPaintEngine::setActive(bool state)

Establece el estado activo del motor de pintura en state.

Véase también isActive().

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

Reimplemente esta función para devolver el motor de pintura Type.

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

Reimplemente esta función para actualizar el estado de un motor de pintura.

Cuando se implementa, esta función es responsable de comprobar el motor de pintura actual state y actualizar las propiedades que se cambian. Utilice la función QPaintEngineState::state() para averiguar qué propiedades deben actualizarse y, a continuación, utilice la función get function correspondiente para recuperar los valores actuales de las propiedades dadas.

Véase también 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.