En esta página

QPaintDevice Class

La clase QPaintDevice es la clase base de los objetos sobre los que se puede pintar con QPainter. Más...

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

QImage, QOpenGLPaintDevice, QPagedPaintDevice, QPaintDeviceWindow, QPicture, QPixmap, QSvgGenerator, y QWidget

Tipos Públicos

enum PaintDeviceMetric { PdmWidth, PdmHeight, PdmWidthMM, PdmHeightMM, PdmNumColors, …, PdmDevicePixelRatioF_EncodedB }

Funciones Públicas

virtual ~QPaintDevice()
int colorCount() const
int depth() const
qreal devicePixelRatio() const
qreal devicePixelRatioF() const
int height() const
int heightMM() const
int logicalDpiX() const
int logicalDpiY() const
virtual QPaintEngine *paintEngine() const = 0
bool paintingActive() const
int physicalDpiX() const
int physicalDpiY() const
int width() const
int widthMM() const

Miembros Públicos Estáticos

(since 6.8) int encodeMetricF(QPaintDevice::PaintDeviceMetric metric, double value)

Funciones Protegidas

QPaintDevice()
virtual int metric(QPaintDevice::PaintDeviceMetric metric) const

Descripción Detallada

Un dispositivo de pintura es una abstracción de un espacio bidimensional sobre el que se puede dibujar utilizando un QPainter. Su sistema de coordenadas por defecto tiene su origen situado en la posición superior izquierda. X aumenta hacia la derecha e Y hacia abajo. La unidad es un píxel.

Las capacidades de dibujo de QPaintDevice están actualmente implementadas por las subclases QWidget, QImage, QPixmap, QPicture, y QPrinter.

Para implementar soporte para un nuevo backend, debes derivar de QPaintDevice y reimplementar la función virtual paintEngine() para indicar a QPainter qué motor de pintura debe usarse para dibujar en este dispositivo en particular. Ten en cuenta que también debes crear un motor de pintura correspondiente para poder dibujar en el dispositivo, es decir, derivar de QPaintEngine y reimplementar sus funciones virtuales.

Atención: Qt requiere que exista un objeto QGuiApplication antes de poder crear cualquier dispositivo de pintura. Los dispositivos de pintura acceden a recursos del sistema de ventanas, y estos recursos no se inicializan antes de que se cree un objeto de aplicación.

La clase QPaintDevice proporciona varias funciones que devuelven las distintas métricas del dispositivo: La función depth() devuelve su profundidad de bits (número de planos de bits). La función height() devuelve su altura en unidades del sistema de coordenadas por defecto (por ejemplo, píxeles para QPixmap y QWidget) mientras que heightMM() devuelve la altura del dispositivo en milímetros. Del mismo modo, las funciones width() y widthMM() devuelven la anchura del dispositivo en unidades del sistema de coordenadas por defecto y en milímetros, respectivamente. Alternativamente, puede utilizarse la función protegida metric() para recuperar la información métrica especificando el PaintDeviceMetric deseado como argumento.

Las funciones logicalDpiX() y logicalDpiY() devuelven la resolución horizontal y vertical del dispositivo en puntos por pulgada. Las funciones physicalDpiX() y physicalDpiY() también devuelven la resolución del dispositivo en puntos por pulgada, pero tenga en cuenta que si la resolución lógica y física difieren, la correspondiente QPaintEngine debe gestionar el mapeo. Por último, la función colorCount() devuelve el número de colores diferentes disponibles para el dispositivo de pintura.

Véase también QPaintEngine, QPainter, Sistema de coordenadas y Sistema de pintura.

Documentación de tipos de miembros

enum QPaintDevice::PaintDeviceMetric

Describe las distintas métricas de un dispositivo de pintura.

ConstanteValorDescripción
QPaintDevice::PdmWidth1La anchura del dispositivo de pintura en unidades del sistema de coordenadas por defecto (por ejemplo, píxeles para QPixmap y QWidget). Véase también width().
QPaintDevice::PdmHeight2La altura del dispositivo de pintura en unidades del sistema de coordenadas por defecto (por ejemplo, píxeles para QPixmap y QWidget). Véase también height().
QPaintDevice::PdmWidthMM3La anchura del dispositivo de pintura en milímetros. Véase también widthMM().
QPaintDevice::PdmHeightMM4La altura del dispositivo de pintura en milímetros. Véase también heightMM().
QPaintDevice::PdmNumColors5El número de colores disponibles para el dispositivo de pintura. Véase también colorCount().
QPaintDevice::PdmDepth6La profundidad de bits (número de planos de bits) del dispositivo de pintura. Véase también depth().
QPaintDevice::PdmDpiX7La resolución horizontal del dispositivo en puntos por pulgada. Véase también logicalDpiX().
QPaintDevice::PdmDpiY8La resolución vertical del dispositivo en puntos por pulgada. Véase también logicalDpiY().
QPaintDevice::PdmPhysicalDpiX9La resolución horizontal del dispositivo en puntos por pulgada. Véase también physicalDpiX().
QPaintDevice::PdmPhysicalDpiY10La resolución vertical del dispositivo en puntos por pulgada. Véase también physicalDpiY().
QPaintDevice::PdmDevicePixelRatio11La proporción de píxeles del dispositivo. Los valores habituales son 1 para pantallas de ppp normales y 2 para pantallas "retina" de ppp altos.
QPaintDevice::PdmDevicePixelRatioScaled12La proporción de píxeles del dispositivo a escala. Esto es idéntico a PdmDevicePixelRatio, excepto que el valor se escala por un factor constante con el fin de soportar dispositivos de pintura con factores de escala fraccionarios. El factor de escala constante utilizado es devicePixelRatioFScale(). Este valor enum se ha introducido en Qt 5.6.
QPaintDevice::PdmDevicePixelRatioF_EncodedA (since Qt 6.8)13Este elemento enum, junto con el elemento B correspondiente, se utilizan juntos para la relación de píxeles del dispositivo, como un valor de coma flotante double codificado. Una subclase de QPaintDevice que admita valores DPR fraccionarios debe implementar la compatibilidad con estos dos elementos enum en su anulación de la función metric(). Se espera que el valor devuelto sea el resultado de la función encodeMetricF().
QPaintDevice::PdmDevicePixelRatioF_EncodedB (since Qt 6.8)14Véase PdmDevicePixelRatioF_EncodedA.

Véase también metric() y devicePixelRatio().

Documentación de las funciones miembro

[noexcept protected] QPaintDevice::QPaintDevice()

Construye un dispositivo de pintura. Este constructor sólo puede ser invocado desde subclases de QPaintDevice.

[virtual noexcept] QPaintDevice::~QPaintDevice()

Destruye el dispositivo de pintura y libera recursos del sistema de ventanas.

int QPaintDevice::colorCount() const

Devuelve el número de colores diferentes disponibles para el dispositivo de pintura. Si el número de colores disponibles es demasiado grande para ser representado por el tipo de datos int, entonces se devolverá INT_MAX en su lugar.

int QPaintDevice::depth() const

Devuelve la profundidad de bits (número de planos de bits) del dispositivo de pintura.

qreal QPaintDevice::devicePixelRatio() const

Devuelve la proporción de píxeles del dispositivo.

Los valores habituales son 1 para pantallas con ppp normales y 2 para pantallas "retina" con ppp altos.

qreal QPaintDevice::devicePixelRatioF() const

Devuelve la proporción de píxeles del dispositivo como un número de coma flotante.

[static, since 6.8] int QPaintDevice::encodeMetricF(QPaintDevice::PaintDeviceMetric metric, double value)

Devuelve value codificado para la métrica metric. Las subclases que implementen metric() deben utilizar esta función para codificar

ConstanteDescripción
asun valor de retorno entero cuando la métrica de consulta especifica un valor de punto flotante codificado.

Esta función se introdujo en Qt 6.8.

int QPaintDevice::height() const

Devuelve la altura del dispositivo de pintura en unidades del sistema de coordenadas predeterminado (por ejemplo, píxeles para QPixmap y QWidget).

Véase también heightMM().

int QPaintDevice::heightMM() const

Devuelve la altura del dispositivo de pintura en milímetros. Debido a las limitaciones de la plataforma, puede que no sea posible utilizar esta función para determinar el tamaño físico real de un widget en la pantalla.

Véase también height().

int QPaintDevice::logicalDpiX() const

Devuelve la resolución horizontal del dispositivo en puntos por pulgada, que se utiliza para calcular el tamaño de las fuentes. Para X11, suele ser la misma que podría calcularse a partir de widthMM().

Tenga en cuenta que si logicalDpiX() no es igual a physicalDpiX(), el correspondiente QPaintEngine debe manejar el mapeo de resolución.

Véase también logicalDpiY() y physicalDpiX().

int QPaintDevice::logicalDpiY() const

Devuelve la resolución vertical del dispositivo en puntos por pulgada, que se utiliza para calcular el tamaño de las fuentes. Para X11, suele ser la misma que podría calcularse a partir de heightMM().

Tenga en cuenta que si logicalDpiY() no es igual a physicalDpiY(), el correspondiente QPaintEngine debe manejar el mapeo de la resolución.

Véase también logicalDpiX() y physicalDpiY().

[virtual protected] int QPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const

Devuelve la información métrica del dispositivo de pintura dado metric.

Véase también PaintDeviceMetric.

[pure virtual] QPaintEngine *QPaintDevice::paintEngine() const

Devuelve un puntero al motor de pintura utilizado para dibujar en el dispositivo.

bool QPaintDevice::paintingActive() const

Devuelve true si el dispositivo está siendo pintado actualmente, es decir, alguien ha llamado a QPainter::begin() pero aún no ha llamado a QPainter::end() para este dispositivo; en caso contrario devuelve false.

Véase también QPainter::isActive().

int QPaintDevice::physicalDpiX() const

Devuelve la resolución horizontal del dispositivo en puntos por pulgada. Por ejemplo, al imprimir, esta resolución se refiere a la resolución física de la impresora. El DPI lógico, por otro lado, se refiere a la resolución utilizada por el motor de pintura real.

Tenga en cuenta que si physicalDpiX() no es igual a logicalDpiX(), el correspondiente QPaintEngine debe manejar el mapeo de la resolución.

Véase también physicalDpiY() y logicalDpiX().

int QPaintDevice::physicalDpiY() const

Devuelve la resolución horizontal del dispositivo en puntos por pulgada. Por ejemplo, al imprimir, esta resolución se refiere a la resolución física de la impresora. El DPI lógico, por otro lado, se refiere a la resolución utilizada por el motor de pintura real.

Tenga en cuenta que si el valor de physicalDpiY() no es igual al de logicalDpiY(), el correspondiente QPaintEngine debe encargarse del mapeo de la resolución.

Véase también physicalDpiX() y logicalDpiY().

int QPaintDevice::width() const

Devuelve la anchura del dispositivo de pintura en unidades del sistema de coordenadas predeterminado (por ejemplo, píxeles para QPixmap y QWidget).

Véase también widthMM().

int QPaintDevice::widthMM() const

Devuelve la anchura del dispositivo de pintura en milímetros. Debido a las limitaciones de la plataforma, puede que no sea posible utilizar esta función para determinar el tamaño físico real de un widget en la pantalla.

Véase también width().

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