Класс QSvgRenderer
Класс QSvgRenderer используется для отрисовки содержимого SVG-файлов на устройствах рисования. Подробнее...
| Заголовок: | #include <QSvgRenderer> |
| qmake: | QT += svg |
| С момента: | Qt 4.1 |
| Наследует: | QObject |
Этот класс был введён в Qt 4.1.
Примечание: Все функции в этом классе являются внутрипоточными.
Свойства
- framesPerSecond : int
- viewBox : QRectF
Открытые функции
| QSvgRenderer(QXmlStreamReader *contents, QObject *parent = nullptr) | |
| QSvgRenderer(const QByteArray &contents, QObject *parent = nullptr) | |
| QSvgRenderer(const QString &filename, QObject *parent = nullptr) | |
| QSvgRenderer(QObject *parent = nullptr) | |
| virtual | ~QSvgRenderer() |
| bool | animated() const |
| QRectF | boundsOnElement(const QString &id) const |
| QSize | defaultSize() const |
| bool | elementExists(const QString &id) const |
| int | framesPerSecond() const |
| bool | isValid() const |
| QMatrix | matrixForElement(const QString &id) const |
| void | setFramesPerSecond(int num) |
| void | setViewBox(const QRect &viewbox) |
| void | setViewBox(const QRectF &viewbox) |
| QRect | viewBox() const |
| QRectF | viewBoxF() const |
Открытые слоты
| bool | load(QXmlStreamReader *contents) |
| bool | load(const QByteArray &contents) |
| bool | load(const QString &filename) |
| void | render(QPainter *painter, const QString &elementId, const QRectF &bounds = QRectF()) |
| void | render(QPainter *painter, const QRectF &bounds) |
| void | render(QPainter *painter) |
Сигналы
| void | repaintNeeded() |
Подробное описание
Используя QSvgRenderer, можно отрисовать Scalable Vector Graphics (SVG) на любом подклассе QPaintDevice, включая QWidget, QImage и QGLWidget.
QSvgRenderer предоставляет API, поддерживающий базовые функции отрисовки SVG, такие как загрузка и отрисовка статических изображений, а также более интерактивные функции, такие как анимация. Поскольку отрисовка выполняется с помощью QPainter, SVG-изображения можно отрисовать на любом подклассе QPaintDevice.
SVG-изображения загружаются либо при создании QSvgRenderer, либо позже с помощью функций load(). Данные предоставляются либо непосредственно в виде сериализованного XML, либо косвенно с помощью имени файла. Если был загружен допустимый файл, либо при создании рендерера, либо в какой-то момент позже, isValid() возвращает true; в противном случае возвращает false. QSvgRenderer предоставляет слот render() для отрисовки текущего документа или текущей кадра анимированного документа с помощью заданного painter.
Функция defaultSize() предоставляет информацию о необходимом пространстве для отрисовки текущего загруженного SVG-файла. Это полезно для устройств рисования, таких как QWidget, которые часто должны предоставить подсказку размера своему родительскому макету. Размер по умолчанию изображения может отличаться от его видимой области, определяемой свойством viewBox.
Поддерживаются анимированные SVG-изображения, которые можно контролировать с помощью простого набора функций и свойств:
- Функция animated() указывает, содержит ли изображение информацию об анимации.
- Свойство framesPerSecond содержит частоту воспроизведения анимации.
Наконец, класс QSvgRenderer предоставляет сигнал repaintNeeded(), который генерируется всякий раз, когда требуется обновить отрисовку документа.
См. также QSvgWidget, Классы Qt SVG C++, Пример просмотра SVG и QPicture.
Документация свойств
framesPerSecond : int
Это свойство содержит количество кадров в секунду для отображения
Количество кадров в секунду равно 0, если текущий документ не анимирован.
Функции доступа:
| int | framesPerSecond() const |
| void | setFramesPerSecond(int num) |
См. также animated().
viewBox : QRectF
Это свойство содержит прямоугольник, определяющий видимую область документа в логических координатах
Это свойство было введено в Qt 4.2.
Функции доступа:
| QRectF | viewBoxF() const |
| void | setViewBox(const QRect &viewbox) |
| void | setViewBox(const QRectF &viewbox) |
Документация функций-членов
QSvgRenderer::QSvgRenderer(QXmlStreamReader *contents, QObject *parent = nullptr)
Создаёт новый рендерер с заданным parent и загружает данные SVG с помощью заданного в contents потока чтения.
Эта функция была введена в Qt 4.5.
QSvgRenderer::QSvgRenderer(const QByteArray &contents, QObject *parent = nullptr)
Создаёт новый рендерер с заданным parent и загружает данные SVG из массива байтов, заданного в contents.
QSvgRenderer::QSvgRenderer(const QString &filename, QObject *parent = nullptr)
Создаёт новый рендерер с заданным parent и загружает содержимое SVG-файла с заданным именем filename.
QSvgRenderer::QSvgRenderer(QObject *parent = nullptr)
Создаёт новый рендерер с заданным parent.
[slot] bool QSvgRenderer::load(QXmlStreamReader *contents)
Загружает указанный SVG в contents, возвращая true, если содержимое было успешно обработано; в противном случае возвращает false.
Чтец будет использоваться с текущей позиции. Если contents null, поведение не определено.
Эта функция была добавлена в Qt 4.5.
[slot] bool QSvgRenderer::load(const QByteArray &contents)
Загружает указанный SVG-формат contents, возвращая true, если содержимое было успешно обработано; в противном случае возвращает false.
[slot] bool QSvgRenderer::load(const QString &filename)
Загружает SVG-файл, указанный filename, возвращая true, если содержимое было успешно обработано; в противном случае возвращает false.
[slot] void QSvgRenderer::render(QPainter *painter, const QString &elementId, const QRectF &bounds = QRectF())
Отображает заданный элемент с elementId, используя заданный painter в заданных bounds. Если прямоугольник области не задан, SVG-элемент отображается на весь устройство рисования.
[slot] void QSvgRenderer::render(QPainter *painter, const QRectF &bounds)
Отображает текущий документ или текущую кадр анимированного документа, используя заданный painter в заданных bounds внутри painter. Если bounds не пусто, вывод будет масштабироваться для заполнения прямоугольника, игнорируя любое соотношение сторон, заданное SVG.
[slot] void QSvgRenderer::render(QPainter *painter)
Отображает текущий документ или текущую кадр анимированного документа, используя заданный painter.
[signal] void QSvgRenderer::repaintNeeded()
Этот сигнал испускается всякий раз, когда необходимо обновить отображение документа, обычно для целей анимации.
[virtual] QSvgRenderer::~QSvgRenderer()
Уничтожает рендерер.
bool QSvgRenderer::animated() const
Возвращает true, если текущий документ содержит анимированные элементы; в противном случае возвращает false.
См. такжеframesPerSecond().
QRectF QSvgRenderer::boundsOnElement(const QString &id) const
Возвращает прямоугольник ограничивающей области элемента с заданным id. Матрица преобразования родительских элементов не влияет на границы элемента.
Эта функция была добавлена в Qt 4.2.
См. такжеmatrixForElement().
QSize QSvgRenderer::defaultSize() const
Возвращает размер по умолчанию содержимого документа.
bool QSvgRenderer::elementExists(const QString &id) const
Возвращает true, если элемент с заданным id существует в текущем обработанном SVG-файле и является рендерируемым элементом.
Примечание: этот метод возвращает true только для элементов, которые могут быть отображены. Это означает, что элементы, которые считаются частью свойств заполнения/контура, например, радиальные градиенты, даже если они помечены атрибутами "id", не будут найдены этим методом.
Эта функция была добавлена в Qt 4.2.
bool QSvgRenderer::isValid() const
Возвращает true, если существует допустимый текущий документ; в противном случае возвращает false.
QMatrix QSvgRenderer::matrixForElement(const QString &id) const
Возвращает матрицу преобразования для элемента с заданным id. Матрица является результатом преобразования элементов-родителей. Преобразование самого элемента не включено.
Чтобы найти прямоугольник ограничивающей области элемента в логических координатах, можно применить матрицу к прямоугольнику, возвращённому из boundsOnElement().
Эта функция была добавлена в Qt 4.2.
См. такжеboundsOnElement().
QRect QSvgRenderer::viewBox() const
Возвращает viewBoxF().toRect().
См. такжеsetViewBox() и viewBoxF().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qsvgrenderer.html