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 |
- Lista de todos los miembros, incluyendo los heredados
- QSvgRenderer es parte de la clase Painting Classes.
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); }); [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); }); [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); }); [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); }); [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); }); [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); }); [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.