Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
QSvgRenderer Class Reference

\inmodule QtSvg More...

#include <qsvgrenderer.h>

+ Inheritance diagram for QSvgRenderer:
+ Collaboration diagram for QSvgRenderer:

Public Slots

bool load (const QString &filename)
 Loads the SVG file specified by filename, returning true if the content was successfully parsed; otherwise returns false.
 
bool load (const QByteArray &contents)
 Loads the specified SVG format contents, returning true if the content was successfully parsed; otherwise returns false.
 
bool load (QXmlStreamReader *contents)
 Loads the specified SVG in contents, returning true if the content was successfully parsed; otherwise returns false.
 
void render (QPainter *p)
 Renders the current document, or the current frame of an animated document, using the given painter.
 
void render (QPainter *p, const QRectF &bounds)
 Renders the current document, or the current frame of an animated document, using the given painter on the specified bounds within the painter.
 
void render (QPainter *p, const QString &elementId, const QRectF &bounds=QRectF())
 Renders the given element with elementId using the given painter on the specified bounds.
 
- Public Slots inherited from QObject
void deleteLater ()
 \threadsafe
 

Signals

void repaintNeeded ()
 This signal is emitted whenever the rendering of the document needs to be updated, usually for the purposes of animation.
 
- Signals inherited from QObject
void destroyed (QObject *=nullptr)
 This signal is emitted immediately before the object obj is destroyed, after any instances of QPointer have been notified, and cannot be blocked.
 
void objectNameChanged (const QString &objectName, QPrivateSignal)
 This signal is emitted after the object's name has been changed.
 

Public Member Functions

 QSvgRenderer (QObject *parent=nullptr)
 Constructs a new renderer with the given parent.
 
 QSvgRenderer (const QString &filename, QObject *parent=nullptr)
 Constructs a new renderer with the given parent and loads the contents of the SVG file with the specified filename.
 
 QSvgRenderer (const QByteArray &contents, QObject *parent=nullptr)
 Constructs a new renderer with the given parent and loads the SVG data from the byte array specified by contents.
 
 QSvgRenderer (QXmlStreamReader *contents, QObject *parent=nullptr)
 
 ~QSvgRenderer ()
 Destroys the renderer.
 
bool isValid () const
 Returns true if there is a valid current document; otherwise returns false.
 
QSize defaultSize () const
 Returns the default size of the document contents.
 
QRect viewBox () const
 Returns viewBoxF().toRect().
 
QRectF viewBoxF () const
 
void setViewBox (const QRect &viewbox)
 
void setViewBox (const QRectF &viewbox)
 
Qt::AspectRatioMode aspectRatioMode () const
 
void setAspectRatioMode (Qt::AspectRatioMode mode)
 
QtSvg::Options options () const
 
void setOptions (QtSvg::Options flags)
 
bool animated () const
 Returns true if the current document contains animated elements; otherwise returns false.
 
int framesPerSecond () const
 
void setFramesPerSecond (int num)
 
int currentFrame () const
 
void setCurrentFrame (int)
 
int animationDuration () const
 
bool isAnimationEnabled () const
 
void setAnimationEnabled (bool enable)
 
QRectF boundsOnElement (const QString &id) const
 
bool elementExists (const QString &id) const
 
QTransform transformForElement (const QString &id) const
 
- Public Member Functions inherited from QObject
Q_INVOKABLE QObject (QObject *parent=nullptr)
 Constructs an object with parent object parent.
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects.
 
virtual bool event (QEvent *event)
 This virtual function receives events to an object and should return true if the event e was recognized and processed.
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 Filters events if this object has been installed as an event filter for the watched object.
 
QString objectName () const
 
Q_WEAK_OVERLOAD void setObjectName (const QString &name)
 Sets the object's name to name.
 
void setObjectName (QAnyStringView name)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
QBindable< QStringbindableObjectName ()
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false.
 
bool isWindowType () const
 Returns true if the object is a window; otherwise returns false.
 
bool isQuickItemType () const
 Returns true if the object is a QQuickItem; otherwise returns false.
 
bool signalsBlocked () const noexcept
 Returns true if signals are blocked; otherwise returns false.
 
bool blockSignals (bool b) noexcept
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it).
 
QThreadthread () const
 Returns the thread in which the object lives.
 
bool moveToThread (QThread *thread QT6_DECL_NEW_OVERLOAD_TAIL)
 Changes the thread affinity for this object and its children and returns true on success.
 
int startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer)
 This is an overloaded function that will start a timer of type timerType and a timeout of interval milliseconds.
 
int startTimer (std::chrono::nanoseconds time, Qt::TimerType timerType=Qt::CoarseTimer)
 
void killTimer (int id)
 Kills the timer with timer identifier, id.
 
void killTimer (Qt::TimerId id)
 
template<typename T >
findChild (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns the child of this object that can be cast into type T and that is called name, or \nullptr if there is no such object.
 
template<typename T >
QList< T > findChildren (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects.
 
template<typename T >
findChild (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
template<typename T >
QList< T > findChildren (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
const QObjectListchildren () const
 Returns a list of child objects.
 
void setParent (QObject *parent)
 Makes the object a child of parent.
 
void installEventFilter (QObject *filterObj)
 Installs an event filter filterObj on this object.
 
void removeEventFilter (QObject *obj)
 Removes an event filter object obj from this object.
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=nullptr, const QObject *receiver=nullptr, const char *member=nullptr) const
 
bool disconnect (const QObject *receiver, const char *member=nullptr) const
 
void dumpObjectTree () const
 Dumps a tree of children to the debug output.
 
void dumpObjectInfo () const
 Dumps information about signal connections, etc.
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value.
 
bool setProperty (const char *name, QVariant &&value)
 
QVariant property (const char *name) const
 Returns the value of the object's name property.
 
QList< QByteArraydynamicPropertyNames () const
 
QBindingStoragebindingStorage ()
 
const QBindingStoragebindingStorage () const
 
QObjectparent () const
 Returns a pointer to the parent object.
 
bool inherits (const char *classname) const
 Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false.
 

Properties

QRectF viewBox
 the rectangle specifying the visible area of the document in logical coordinates
 
int framesPerSecond
 the number of frames per second to be shown
 
int currentFrame
 the current frame of the document's animation, or 0 if the document is not animated
 
Qt::AspectRatioMode aspectRatioMode
 how rendering adheres to the SVG view box aspect ratio
 
QtSvg::Options options
 
bool animationEnabled
 whether the animation should run, if the SVG is animated
 
- Properties inherited from QObject
QString objectName
 the name of this object
 

Additional Inherited Members

- Static Public Member Functions inherited from QObject
static QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 \threadsafe
 
static QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename Func1 , typename Func2 >
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::ContextTypeForFunctor< Func2 >::ContextType *context, Func2 &&slot, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename Func1 , typename Func2 >
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, Func2 &&slot)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 \threadsafe
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static bool disconnect (const QMetaObject::Connection &)
 Disconnect a connection.
 
template<typename Func1 , typename Func2 >
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot)
 
template<typename Func1 >
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const QObject *receiver, void **zero)
 
- Protected Member Functions inherited from QObject
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns \nullptr.
 
int senderSignalIndex () const
 
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal.
 
bool isSignalConnected (const QMetaMethod &signal) const
 
virtual void timerEvent (QTimerEvent *event)
 This event handler can be reimplemented in a subclass to receive timer events for the object.
 
virtual void childEvent (QChildEvent *event)
 This event handler can be reimplemented in a subclass to receive child events.
 
virtual void customEvent (QEvent *event)
 This event handler can be reimplemented in a subclass to receive custom events.
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 
 QObject (QObjectPrivate &dd, QObject *parent=nullptr)
 
- Protected Attributes inherited from QObject
QScopedPointer< QObjectDatad_ptr
 

Detailed Description

\inmodule QtSvg

The QSvgRenderer class is used to draw the contents of SVG files onto paint devices.

Since
4.1 \reentrant

Using QSvgRenderer, Scalable Vector Graphics (SVG) can be rendered onto any QPaintDevice subclass, including QWidget, QImage, and QGLWidget.

QSvgRenderer provides an API that supports basic features of SVG rendering, such as loading and rendering of static drawings, and more interactive features like animation. Since the rendering is performed using QPainter, SVG drawings can be rendered on any subclass of QPaintDevice.

SVG drawings are either loaded when an QSvgRenderer is constructed, or loaded later using the load() functions. Data is either supplied directly as serialized XML, or indirectly using a file name. If a valid file has been loaded, either when the renderer is constructed or at some later time, isValid() returns true; otherwise it returns false. QSvgRenderer provides the render() slot to render the current document, or the current frame of an animated document, using a given painter.

The defaultSize() function provides information about the amount of space that is required to render the currently loaded SVG file. This is useful for paint devices, such as QWidget, that often need to supply a size hint to their parent layout. The default size of a drawing may differ from its visible area, found using the \l viewBox property.

Animated SVG drawings are supported, and can be controlled with a simple collection of functions and properties:

\list

  • The animated() function indicates whether a drawing contains animation information. \omit
  • The animationDuration() function provides the duration in milliseconds of the animation, without taking any looping into account.
  • The \l currentFrame property contains the current frame of the animation. \endomit
  • The \l framesPerSecond property contains the rate at which the animation plays. \endlist

Finally, the QSvgRenderer class provides the repaintNeeded() signal which is emitted whenever the rendering of the document needs to be updated.

See also
QSvgWidget, {Qt SVG C++ Classes}, QPicture

Definition at line 23 of file qsvgrenderer.h.

Constructor & Destructor Documentation

◆ QSvgRenderer() [1/4]

QSvgRenderer::QSvgRenderer ( QObject * parent = nullptr)

Constructs a new renderer with the given parent.

Definition at line 124 of file qsvgrenderer.cpp.

◆ QSvgRenderer() [2/4]

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

Constructs a new renderer with the given parent and loads the contents of the SVG file with the specified filename.

Definition at line 133 of file qsvgrenderer.cpp.

References load().

+ Here is the call graph for this function:

◆ QSvgRenderer() [3/4]

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

Constructs a new renderer with the given parent and loads the SVG data from the byte array specified by contents.

Definition at line 143 of file qsvgrenderer.cpp.

References contents, and load().

+ Here is the call graph for this function:

◆ QSvgRenderer() [4/4]

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

Constructs a new renderer with the given parent and loads the SVG data using the stream reader specified by contents.

Definition at line 155 of file qsvgrenderer.cpp.

References contents, and load().

+ Here is the call graph for this function:

◆ ~QSvgRenderer()

QSvgRenderer::~QSvgRenderer ( )

Destroys the renderer.

Definition at line 164 of file qsvgrenderer.cpp.

Member Function Documentation

◆ animated()

bool QSvgRenderer::animated ( ) const

Returns true if the current document contains animated elements; otherwise returns false.

See also
framesPerSecond()

Definition at line 222 of file qsvgrenderer.cpp.

References d.

◆ animationDuration()

int QSvgRenderer::animationDuration ( ) const

Returns the number of frames in the animation, or 0 if the current document is not animated.

See also
animated(), framesPerSecond

Definition at line 376 of file qsvgrenderer.cpp.

References d.

◆ aspectRatioMode()

Qt::AspectRatioMode QSvgRenderer::aspectRatioMode ( ) const

Definition at line 300 of file qsvgrenderer.cpp.

References d, Qt::IgnoreAspectRatio, and Qt::KeepAspectRatio.

◆ boundsOnElement()

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

Returns bounding rectangle of the item with the given id. The transformation matrix of parent elements is not affecting the bounds of the element.

See also
transformForElement()

Definition at line 520 of file qsvgrenderer.cpp.

References d.

Referenced by QGraphicsSvgItemPrivate::updateDefaultSize().

+ Here is the caller graph for this function:

◆ currentFrame()

int QSvgRenderer::currentFrame ( ) const

Definition at line 353 of file qsvgrenderer.cpp.

References d.

◆ defaultSize()

QSize QSvgRenderer::defaultSize ( ) const

Returns the default size of the document contents.

Definition at line 181 of file qsvgrenderer.cpp.

References d.

Referenced by QSvgIconEngine::pixmap(), and QGraphicsSvgItemPrivate::updateDefaultSize().

+ Here is the caller graph for this function:

◆ elementExists()

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

Returns true if the element with the given id exists in the currently parsed SVG file and is a renderable element.

Note: this method returns true only for elements that can be rendered. Which implies that elements that are considered part of the fill/stroke style properties, e.g. radialGradients even tough marked with "id" attributes will not be found by this method.

Definition at line 543 of file qsvgrenderer.cpp.

References d.

◆ framesPerSecond()

int QSvgRenderer::framesPerSecond ( ) const

Definition at line 267 of file qsvgrenderer.cpp.

References d.

◆ isAnimationEnabled()

bool QSvgRenderer::isAnimationEnabled ( ) const

Definition at line 246 of file qsvgrenderer.cpp.

References d.

◆ isValid()

bool QSvgRenderer::isValid ( ) const

Returns true if there is a valid current document; otherwise returns false.

Definition at line 172 of file qsvgrenderer.cpp.

References d.

Referenced by QSvgIconEngine::addFile(), and QSvgIconEngine::pixmap().

+ Here is the caller graph for this function:

◆ load [1/3]

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

Loads the specified SVG format contents, returning true if the content was successfully parsed; otherwise returns false.

Definition at line 427 of file qsvgrenderer.cpp.

References contents, d, and loadDocument().

+ Here is the call graph for this function:

◆ load [2/3]

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

Loads the SVG file specified by filename, returning true if the content was successfully parsed; otherwise returns false.

Definition at line 417 of file qsvgrenderer.cpp.

References d, and loadDocument().

Referenced by QSvgRenderer(), QSvgRenderer(), QSvgRenderer(), QSvgWidget::QSvgWidget(), and QSvgIconEnginePrivate::tryLoad().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ load [3/3]

bool QSvgRenderer::load ( QXmlStreamReader * contents)
slot

Loads the specified SVG in contents, returning true if the content was successfully parsed; otherwise returns false.

The reader will be used from where it currently is positioned. If contents is null, behavior is undefined.

Since
4.5

Definition at line 442 of file qsvgrenderer.cpp.

References contents, d, and loadDocument().

+ Here is the call graph for this function:

◆ options()

QtSvg::Options QSvgRenderer::options ( ) const

Definition at line 331 of file qsvgrenderer.cpp.

References d.

◆ render [1/3]

void QSvgRenderer::render ( QPainter * p)
slot

Renders the current document, or the current frame of an animated document, using the given painter.

Definition at line 452 of file qsvgrenderer.cpp.

References d, and painter.

Referenced by QSvgIconEngine::pixmap(), and QSvgIOHandler::read().

+ Here is the caller graph for this function:

◆ render [2/3]

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

Renders the current document, or the current frame of an animated document, using the given painter on the specified bounds within the painter.

If bounds is not empty, the output will be scaled to fill it, ignoring any aspect ratio implied by the SVG.

Definition at line 487 of file qsvgrenderer.cpp.

References d, and painter.

◆ render [3/3]

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

Renders the given element with elementId using the given painter on the specified bounds.

If the bounding rectangle is not specified the SVG element is mapped to the whole paint device.

Definition at line 472 of file qsvgrenderer.cpp.

References d, and painter.

◆ repaintNeeded

void QSvgRenderer::repaintNeeded ( )
signal

This signal is emitted whenever the rendering of the document needs to be updated, usually for the purposes of animation.

Referenced by QSvgRendererPrivate::ensureTimerCreated().

+ Here is the caller graph for this function:

◆ setAnimationEnabled()

void QSvgRenderer::setAnimationEnabled ( bool enable)

Definition at line 252 of file qsvgrenderer.cpp.

References d.

Referenced by QSvgWidgetListener::eventFilter().

+ Here is the caller graph for this function:

◆ setAspectRatioMode()

void QSvgRenderer::setAspectRatioMode ( Qt::AspectRatioMode mode)

Definition at line 308 of file qsvgrenderer.cpp.

References d, Qt::IgnoreAspectRatio, and Qt::KeepAspectRatio.

◆ setCurrentFrame()

void QSvgRenderer::setCurrentFrame ( int frame)

Definition at line 362 of file qsvgrenderer.cpp.

References d, and frame.

◆ setFramesPerSecond()

void QSvgRenderer::setFramesPerSecond ( int num)

Definition at line 273 of file qsvgrenderer.cpp.

References d, and qWarning.

◆ setOptions()

void QSvgRenderer::setOptions ( QtSvg::Options flags)

Definition at line 337 of file qsvgrenderer.cpp.

References d.

◆ setViewBox() [1/2]

void QSvgRenderer::setViewBox ( const QRect & viewbox)

Definition at line 209 of file qsvgrenderer.cpp.

References d.

◆ setViewBox() [2/2]

void QSvgRenderer::setViewBox ( const QRectF & viewbox)

Definition at line 504 of file qsvgrenderer.cpp.

References d.

◆ transformForElement()

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

Returns the transformation matrix for the element with the given id. The matrix is a product of the transformation of the element's parents. The transformation of the element itself is not included.

To find the bounding rectangle of the element in logical coordinates, you can apply the matrix on the rectangle returned from boundsOnElement().

See also
boundsOnElement()

Definition at line 565 of file qsvgrenderer.cpp.

References d.

◆ viewBox()

QRect QSvgRenderer::viewBox ( ) const

Returns viewBoxF().toRect().

See also
viewBoxF()

Definition at line 195 of file qsvgrenderer.cpp.

References d.

◆ viewBoxF()

QRectF QSvgRenderer::viewBoxF ( ) const

Definition at line 495 of file qsvgrenderer.cpp.

References d.

Property Documentation

◆ animationEnabled

QSvgRenderer::animationEnabled
readwrite

whether the animation should run, if the SVG is animated

Setting the property to false stops the animation timer. Setting the property to false starts the animation timer, provided that the SVG contains animated elements.

If the SVG is not animated, the property will have no effect. Otherwise, the property defaults to true.

See also
animated()
Since
6.7

Definition at line 32 of file qsvgrenderer.h.

◆ aspectRatioMode

QSvgRenderer::aspectRatioMode
readwrite

how rendering adheres to the SVG view box aspect ratio

The accepted modes are: \list

  • Qt::IgnoreAspectRatio (the default): the aspect ratio is ignored and the rendering is stretched to the target bounds.
  • Qt::KeepAspectRatio: rendering is centered and scaled as large as possible within the target bounds while preserving aspect ratio. \endlist
Since
5.15

Definition at line 30 of file qsvgrenderer.h.

◆ currentFrame

QSvgRenderer::currentFrame
readwrite

the current frame of the document's animation, or 0 if the document is not animated

See also
animationDuration(), framesPerSecond, animated()

Definition at line 29 of file qsvgrenderer.h.

◆ framesPerSecond

QSvgRenderer::framesPerSecond
readwrite

the number of frames per second to be shown

The number of frames per second is 0 if the current document is not animated.

See also
animated()

Definition at line 28 of file qsvgrenderer.h.

◆ options

QSvgRenderer::options
readwrite
Since
6.7

This property holds a set of QtSvg::Option flags that can be used to enable or disable various features of the parsing and rendering of SVG files.

Set this property before calling any of the load functions to change the behavior of the QSvgRenderer.

By default, no flags are set.

Definition at line 31 of file qsvgrenderer.h.

◆ viewBox

QSvgRenderer::viewBox
readwrite

the rectangle specifying the visible area of the document in logical coordinates

Since
4.2

Definition at line 27 of file qsvgrenderer.h.


The documentation for this class was generated from the following files: