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 |
- Lista de todos los miembros, incluyendo los heredados
- QPaintEngine es parte de Clases de Pintura.
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
| Constante | Valor | Descripción |
|---|---|---|
QPaintEngine::DirtyPen | 0x0001 | El lápiz está sucio y necesita ser actualizado. |
QPaintEngine::DirtyBrush | 0x0002 | El pincel está sucio y necesita ser actualizado. |
QPaintEngine::DirtyBrushOrigin | 0x0004 | El origen del pincel está sucio y necesita ser actualizado. |
QPaintEngine::DirtyFont | 0x0008 | La fuente está sucia y necesita ser actualizada. |
QPaintEngine::DirtyBackground | 0x0010 | El fondo está sucio y necesita ser actualizado. |
QPaintEngine::DirtyBackgroundMode | 0x0020 | El modo de fondo está sucio y necesita ser actualizado. |
QPaintEngine::DirtyTransform | 0x0040 | La transformación está sucia y necesita ser actualizada. |
QPaintEngine::DirtyClipRegion | 0x0080 | La región de clip está sucia y necesita ser actualizada. |
QPaintEngine::DirtyClipPath | 0x0100 | La ruta del clip está sucia y necesita ser actualizada. |
QPaintEngine::DirtyHints | 0x0200 | El render hints está sucio y necesita ser actualizado. |
QPaintEngine::DirtyCompositionMode | 0x0400 | El modo de composición está sucio y necesita ser actualizado. |
QPaintEngine::DirtyClipEnabled | 0x0800 | Si el recorte está activado o no está sucio y necesita ser actualizado. |
QPaintEngine::DirtyOpacity | 0x1000 | La constante de opacidad ha cambiado y necesita ser actualizada como parte del cambio de estado en QPaintEngine::updateState(). |
QPaintEngine::AllDirty | 0xffff | Enum 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.
| Constante | Valor | Descripción |
|---|---|---|
QPaintEngine::AlphaBlend | 0x00000080 | El motor puede mezclar primitivas alfa. |
QPaintEngine::Antialiasing | 0x00000400 | El motor puede usar antialiasing para mejorar la apariencia de las primitivas renderizadas. |
QPaintEngine::BlendModes | 0x00008000 | El motor admite modos de mezcla. |
QPaintEngine::BrushStroke | 0x00000800 | El 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::ConicalGradientFill | 0x00000040 | El motor admite rellenos de degradado cónico. |
QPaintEngine::ConstantOpacity | 0x00001000 | El motor admite la función proporcionada por QPainter::setOpacity(). |
QPaintEngine::LinearGradientFill | 0x00000010 | El motor admite rellenos de degradado lineal. |
QPaintEngine::MaskedBrush | 0x00002000 | El motor es capaz de renderizar pinceles que tengan una textura con un canal alfa o una máscara. |
QPaintEngine::ObjectBoundingModeGradients | 0x00010000 | El 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::PainterPaths | 0x00000200 | El motor soporta trazados. |
QPaintEngine::PaintOutsidePaintEvent | 0x20000000 | El motor es capaz de pintar fuera de los eventos de pintura. |
QPaintEngine::PatternBrush | 0x00000008 | El motor es capaz de renderizar pinceles con los patrones de pincel especificados en Qt::BrushStyle. |
QPaintEngine::PatternTransform | 0x00000002 | El motor tiene soporte para transformar patrones de pincel. |
QPaintEngine::PerspectiveTransform | 0x00004000 | El motor tiene soporte para realizar transformaciones de perspectiva en primitivas. |
QPaintEngine::PixmapTransform | 0x00000004 | El motor puede transformar pixmaps, incluyendo rotación y cizallamiento. |
QPaintEngine::PorterDuff | 0x00000100 | El motor admite operaciones Porter-Duff. |
QPaintEngine::PrimitiveTransform | 0x00000001 | El motor admite la transformación de primitivas de dibujo. |
QPaintEngine::RadialGradientFill | 0x00000020 | El motor admite rellenos de degradado radial. |
QPaintEngine::RasterOpModes | 0x00020000 | El motor admite operaciones de trama por bits. |
QPaintEngine::AllFeatures | 0xffffffff | Todas 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
| Constante | Valor | Descripción |
|---|---|---|
QPaintEngine::OddEvenMode | 0 | El polígono debe ser dibujado usando la regla de relleno OddEven. |
QPaintEngine::WindingMode | 1 | El polígono debe ser dibujado usando la regla de relleno Winding. |
QPaintEngine::ConvexMode | 2 | El polígono es un polígono convexo y puede dibujarse utilizando algoritmos especializados cuando estén disponibles. |
QPaintEngine::PolylineMode | 3 | Sólo debe dibujarse el contorno del polígono. |
enum QPaintEngine::Type
| Constante | Valor | Descripción |
|---|---|---|
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 para Linux integrado |
QPaintEngine::OpenGL | 6 | |
QPaintEngine::Picture | 7 | QPicture formato |
QPaintEngine::SVG | 8 | Formato XML de gráficos vectoriales escalables |
QPaintEngine::Raster | 9 | |
QPaintEngine::Direct3D | 10 | Sólo Windows, motor basado en Direct3D |
QPaintEngine::Pdf | 11 | Formato de documento portátil |
QPaintEngine::OpenVG | 12 | |
QPaintEngine::User | 50 | ID del primer tipo de usuario |
QPaintEngine::MaxUser | 100 | ID del último tipo de usuario |
QPaintEngine::OpenGL2 | 13 | |
QPaintEngine::PaintBuffer | 14 | |
QPaintEngine::Blitter | 15 | |
QPaintEngine::Direct2D | 16 | Só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.