En esta página

QSvgRenderer Class

La clase QSvgRenderer se utiliza para dibujar el contenido de archivos SVG en dispositivos de pintura. Más...

Cabecera: #include <QSvgRenderer>
CMake: find_package(Qt6 REQUIRED COMPONENTS Svg)
target_link_libraries(mytarget PRIVATE Qt6::Svg)
qmake: QT += svg
Hereda: QObject

Nota: Todas las funciones de esta clase son reentrantes.

Propiedades

Funciones públicas

QSvgRenderer(QObject *parent = nullptr)
QSvgRenderer(QXmlStreamReader *contents, QObject *parent = nullptr)
QSvgRenderer(const QByteArray &contents, QObject *parent = nullptr)
QSvgRenderer(const QString &filename, QObject *parent = nullptr)
virtual ~QSvgRenderer()
bool animated() const
Qt::AspectRatioMode aspectRatioMode() const
QRectF boundsOnElement(const QString &id) const
QSize defaultSize() const
bool elementExists(const QString &id) const
int framesPerSecond() const
bool isAnimationEnabled() const
bool isValid() const
QtSvg::Options options() const
void setAnimationEnabled(bool enable)
void setAspectRatioMode(Qt::AspectRatioMode mode)
void setFramesPerSecond(int num)
void setOptions(QtSvg::Options flags)
void setViewBox(const QRect &viewbox)
void setViewBox(const QRectF &viewbox)
QTransform transformForElement(const QString &id) const
QRect viewBox() const
QRectF viewBoxF() const

Ranuras públicas

bool load(QXmlStreamReader *contents)
bool load(const QByteArray &contents)
bool load(const QString &filename)
void render(QPainter *painter)
void render(QPainter *painter, const QRectF &bounds)
void render(QPainter *painter, const QString &elementId, const QRectF &bounds = QRectF())

Señales

void repaintNeeded()

Miembros públicos estáticos

(since 6.8) void setDefaultOptions(QtSvg::Options flags)

Descripción Detallada

Usando QSvgRenderer, Scalable Vector Graphics (SVG) puede ser renderizado en cualquier subclase de QPaintDevice, incluyendo QWidget, QImage, y QGLWidget.

QSvgRenderer proporciona una API que soporta características básicas de renderizado SVG, como la carga y renderizado de dibujos estáticos, y características más interactivas como la animación. Dado que el renderizado se realiza utilizando QPainter, los dibujos SVG pueden renderizarse en cualquier subclase de QPaintDevice.

Los dibujos SVG se cargan cuando se construye un QSvgRenderer, o se cargan más tarde utilizando las funciones load(). Los datos se suministran directamente como XML serializado, o indirectamente utilizando un nombre de archivo. Si un archivo válido ha sido cargado, ya sea cuando se construye el renderizador o en algún momento posterior, isValid() devuelve true; de lo contrario devuelve false. QSvgRenderer proporciona la ranura render() para renderizar el documento actual, o el frame actual de un documento animado, utilizando un pintor dado.

La función defaultSize() proporciona información sobre la cantidad de espacio que se necesita para renderizar el archivo SVG cargado actualmente. Esto es útil para los dispositivos de pintura, como QWidget, que a menudo necesitan proporcionar una sugerencia de tamaño a su diseño padre. El tamaño predeterminado de un dibujo puede diferir de su área visible, que se encuentra utilizando la propiedad viewBox.

Los dibujos SVG animados son compatibles y pueden controlarse con una sencilla colección de funciones y propiedades:

  • La función animated() indica si un dibujo contiene información de animación.
  • La propiedad framesPerSecond contiene la velocidad a la que se reproduce la animación.

Por último, la clase QSvgRenderer proporciona la señal repaintNeeded() que se emite cada vez que es necesario actualizar el renderizado del documento.

Ver también QSvgWidget, Qt SVG C++ Classesy QPicture.

Documentación de propiedades

[since 6.7] animationEnabled : bool

Esta propiedad indica si la animación debe ejecutarse, si el SVG está animado.

Establecer la propiedad a false detiene el temporizador de animación. Establecer la propiedad a true inicia el temporizador de animación, siempre que el SVG contenga elementos animados.

Si el SVG no está animado, la propiedad no tendrá ningún efecto. En caso contrario, la propiedad tendrá por defecto el valor true.

Esta propiedad se introdujo en Qt 6.7.

Funciones de acceso:

bool isAnimationEnabled() const
void setAnimationEnabled(bool enable)

Véase también animated().

aspectRatioMode : Qt::AspectRatioMode

cómo el renderizado se adhiere a la relación de aspecto de la caja de vista SVG.

Los modos aceptados son:

  • Qt::IgnoreAspectRatio (el predeterminado): se ignora la relación de aspecto y la representación se amplía hasta los límites de destino.
  • Qt::KeepAspectRatiorenderizado centrado: el renderizado se centra y se escala tanto como sea posible dentro de los límites de destino preservando la relación de aspecto.

Funciones de acceso:

Qt::AspectRatioMode aspectRatioMode() const
void setAspectRatioMode(Qt::AspectRatioMode mode)

framesPerSecond : int

Esta propiedad contiene el número de fotogramas por segundo que se mostrarán

El número de fotogramas por segundo es 0 si el documento actual no está animado.

Funciones de acceso:

int framesPerSecond() const
void setFramesPerSecond(int num)

Véase también animated().

[since 6.7] options : QtSvg::Options

Esta propiedad contiene un conjunto de banderas QtSvg::Option que se pueden utilizar para activar o desactivar varias características del análisis sintáctico y la representación de archivos SVG.

Para que tenga efecto, esta propiedad debe establecerse before load () se ejecuta. Tenga en cuenta que los constructores que toman un parámetro fuente SVG realizarán la carga durante la construcción.

Esta propiedad se introdujo en Qt 6.7.

Funciones de acceso:

QtSvg::Options options() const
void setOptions(QtSvg::Options flags)

Véase también setDefaultOptions.

viewBox : QRectF

Esta propiedad contiene el rectángulo que especifica el área visible del documento en coordenadas lógicas

Funciones de acceso:

QRectF viewBoxF() const
void setViewBox(const QRect &viewbox)
void setViewBox(const QRectF &viewbox)

Documentación de funciones miembro

QSvgRenderer::QSvgRenderer(QObject *parent = nullptr)

Crea un nuevo renderizador con la dirección parent.

QSvgRenderer::QSvgRenderer(QXmlStreamReader *contents, QObject *parent = nullptr)

Construye un nuevo renderizador con la dirección parent y carga los datos SVG utilizando el lector de flujo especificado por contents.

QSvgRenderer::QSvgRenderer(const QByteArray &contents, QObject *parent = nullptr)

Crea un nuevo renderizador con la dirección parent y carga los datos SVG desde la matriz de bytes especificada en contents.

QSvgRenderer::QSvgRenderer(const QString &filename, QObject *parent = nullptr)

Construye un nuevo renderizador con la dirección parent y carga el contenido del archivo SVG con la dirección filename especificada.

[virtual noexcept] QSvgRenderer::~QSvgRenderer()

Destruye el renderizador.

bool QSvgRenderer::animated() const

Devuelve true si el documento actual contiene elementos animados; en caso contrario devuelve false.

Véase también framesPerSecond().

QRectF QSvgRenderer::boundsOnElement(const QString &id) const

Devuelve el rectángulo delimitador del elemento con la dirección id. La matriz de transformación de los elementos padre no afecta a los límites del elemento.

Véase también transformForElement().

QSize QSvgRenderer::defaultSize() const

Devuelve el tamaño por defecto del contenido del documento.

bool QSvgRenderer::elementExists(const QString &id) const

Devuelve true si el elemento con el id dado existe en el archivo SVG actualmente analizado y es un elemento renderizable.

Nota: este método devuelve true sólo para elementos que pueden ser renderizados. Lo que implica que los elementos que se consideran parte de las propiedades de estilo de relleno/trazo, por ejemplo, radialGradients aunque estén marcados con atributos "id" no serán encontrados por este método.

bool QSvgRenderer::isValid() const

Devuelve true si hay un documento actual válido; en caso contrario devuelve false.

[slot] bool QSvgRenderer::load(QXmlStreamReader *contents)

Carga el SVG especificado en contents, devolviendo true si el contenido se ha analizado correctamente; en caso contrario devuelve false.

Se utilizará el lector desde donde esté posicionado actualmente. Si contents es null, el comportamiento es indefinido.

Nota: Esta ranura está sobrecargada. Para conectarse a esta ranura:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        svgRenderer, qOverload(&QSvgRenderer::load));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        svgRenderer, [receiver = svgRenderer](QXmlStreamReader *contents) { receiver->load(contents); });
Para más ejemplos y enfoques, véase conectarse a ranuras sobrecargadas.

[slot] bool QSvgRenderer::load(const QByteArray &contents)

Carga el formato SVG especificado contents, devolviendo true si el contenido se ha analizado correctamente; en caso contrario devuelve false.

Nota: Esta ranura está sobrecargada. Para conectarse a esta ranura:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        svgRenderer, qOverload(&QSvgRenderer::load));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        svgRenderer, [receiver = svgRenderer](const QByteArray &contents) { receiver->load(contents); });
Para ver más ejemplos y enfoques, consulte Conexión a ranuras sobrecargadas.

[slot] bool QSvgRenderer::load(const QString &filename)

Carga el archivo SVG especificado por filename, devolviendo true si el contenido se ha analizado correctamente; en caso contrario devuelve false.

Nota: Esta ranura está sobrecargada. Para conectarse a esta ranura:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        svgRenderer, qOverload(&QSvgRenderer::load));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        svgRenderer, [receiver = svgRenderer](const QString &filename) { receiver->load(filename); });
Para ver más ejemplos y enfoques, consulte Conexión a ranuras sobrecargadas.

[slot] void QSvgRenderer::render(QPainter *painter)

Renderiza el documento actual, o el fotograma actual de un documento animado, utilizando la dirección painter.

Nota: Esta ranura está sobrecargada. Para conectarse a esta ranura:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        svgRenderer, qOverload(&QSvgRenderer::render));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        svgRenderer, [receiver = svgRenderer](QPainter *painter) { receiver->render(painter); });
Para más ejemplos y enfoques, ver conectarse a ranuras sobrecargadas.

[slot] void QSvgRenderer::render(QPainter *painter, const QRectF &bounds)

Renderiza el documento actual, o el fotograma actual de un documento animado, utilizando el painter dado en el bounds especificado dentro del pintor. Si bounds no está vacío, la salida se escalará para llenarlo, ignorando cualquier relación de aspecto implícita en el SVG.

Nota: Esta ranura está sobrecargada. Para conectarse a esta ranura:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        svgRenderer, qOverload(&QSvgRenderer::render));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        svgRenderer, [receiver = svgRenderer](QPainter *painter, const QRectF &bounds) { receiver->render(painter, bounds); });
Para ver más ejemplos y enfoques, consulte conectar con ranuras sobrecargadas.

[slot] void QSvgRenderer::render(QPainter *painter, const QString &elementId, const QRectF &bounds = QRectF())

Renderiza el elemento dado con elementId utilizando el painter dado en el bounds especificado. Si no se especifica el rectángulo delimitador, el elemento SVG se asigna a todo el dispositivo de pintura.

Nota: Esta ranura está sobrecargada. Para conectarse a esta ranura:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        svgRenderer, qOverload(&QSvgRenderer::render));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        svgRenderer, [receiver = svgRenderer](QPainter *painter, const QString &elementId, const QRectF &bounds) { receiver->render(painter, elementId, bounds); });
Para ver más ejemplos y enfoques, consulte Conexión a ranuras sobrecargadas.

[signal] void QSvgRenderer::repaintNeeded()

Esta señal se emite cada vez que es necesario actualizar la representación del documento, normalmente con fines de animación.

[static, since 6.8] void QSvgRenderer::setDefaultOptions(QtSvg::Options flags)

Establece las opciones con las que se crearán los renderizadores en flags. Por defecto, no se establece ninguna opción.

En tiempo de ejecución, esto puede ser anulado por la variable de entorno QT_SVG_DEFAULT_OPTIONS.

Esta función se introdujo en Qt 6.8.

QTransform QSvgRenderer::transformForElement(const QString &id) const

Devuelve la matriz de transformación del elemento con la dirección id. La matriz es un producto de la transformación de los padres del elemento. No se incluye la transformación del propio elemento.

Para encontrar el rectángulo que delimita el elemento en coordenadas lógicas, puede aplicar la matriz al rectángulo devuelto por boundsOnElement().

Véase también boundsOnElement().

QRect QSvgRenderer::viewBox() const

Devuelve viewBoxF().toRect().

Véase también setViewBox() y viewBoxF().

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