Класс QSvgRenderer
Класс QSvgRenderer используется для отрисовки содержимого файлов SVG на устройствах рисования. Подробнее...
| Заголовок: | #include <QSvgRenderer> |
| qmake: | QT += svg |
| С момента: | Qt 4.1 |
| Наследует: | QObject |
Примечание: Все функции в этом классе являются повторно-входными.
Свойства
- framesPerSecond : int
- viewBox : QRectF
- 1 свойство унаследовано от QObject
Открытые функции
| QSvgRenderer(QObject *parent = nullptr) | |
| QSvgRenderer(const QString &filename, QObject *parent = nullptr) | |
| QSvgRenderer(const QByteArray &contents, QObject *parent = nullptr) | |
| QSvgRenderer(QXmlStreamReader *contents, 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 |
- 34 открытых функции унаследованы от QObject
Открытые слоты
| bool | load(const QString &filename) |
| bool | load(const QByteArray &contents) |
| bool | load(QXmlStreamReader *contents) |
| void | render(QPainter *painter) |
| void | render(QPainter *painter, const QRectF &bounds) |
| void | render(QPainter *painter, const QString &elementId, const QRectF &bounds = QRectF()) |
- 1 открытый слот унаследован от QObject
Сигналы
| void | repaintNeeded() |
- 2 сигнала унаследованы от QObject
Дополнительные унаследованные члены
- 1 открытая переменная унаследована от QObject
- 10 статические открытые члены унаследованы от QObject
- 9 защищенные функции унаследованы от QObject
- 2 защищенные переменные унаследованы от QObject
Подробное описание
Класс QSvgRenderer используется для отрисовки содержимого файлов SVG на устройствах рисования.
Используя QSvgRenderer, можно отрисовать Scalable Vector Graphics (SVG) на любом подклассе QPaintDevice, включая QWidget, QImage и QGLWidget.
QSvgRenderer предоставляет API, который поддерживает основные функции отрисовки SVG, такие как загрузка и отрисовка статических изображений, а также более интерактивные функции, такие как анимация. Поскольку отрисовка выполняется с помощью QPainter, изображения SVG можно отрисовать на любом подклассе QPaintDevice.
Изображения SVG загружаются либо при создании QSvgRenderer, либо позже с помощью функций load(). Данные предоставляются либо непосредственно в виде сериализованного XML, либо косвенно с помощью имени файла. Если допустимый файл был загружен, либо при создании рендерера, либо впоследствии, isValid() возвращает true; в противном случае — false. QSvgRenderer предоставляет слот render() для отрисовки текущего документа или текущей кадра анимированного документа с помощью заданного средства рисования.
Функция defaultSize() предоставляет информацию о необходимом пространстве для отрисовки загруженного файла SVG. Это полезно для устройств рисования, таких как QWidget, которые часто должны предоставить подсказку размера своему родительскому макету. Размер по умолчанию рисунка может отличаться от его видимой области, которая определяется свойством viewBox.
Поддерживаются анимированные изображения SVG, которые можно управлять с помощью простого набора функций и свойств:
- Функция animated() указывает, содержит ли изображение информацию об анимации.
- Свойство framesPerSecond содержит частоту воспроизведения анимации.
Наконец, класс QSvgRenderer предоставляет сигнал repaintNeeded(), который генерируется всякий раз, когда отрисовка документа должна быть обновлена.
См. также QSvgWidget, Qt SVG C++ классы, Пример SVG Viewer и 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(QObject *parent = nullptr)
Создает новый рендерер с заданным parent.
QSvgRenderer::QSvgRenderer(const QString &filename, QObject *parent = nullptr)
Создаёт новый рендерер с заданным parent и загружает содержимое файла SVG с указанным filename.
QSvgRenderer::QSvgRenderer(const QByteArray &contents, QObject *parent = nullptr)
Создаёт новый рендерер с заданным parent и загружает данные SVG из массива байтов, указанного contents.
QSvgRenderer::QSvgRenderer(QXmlStreamReader *contents, QObject *parent = nullptr)
Создаёт новый рендерер с заданным parent и загружает данные SVG, используя читатель потока, указанный contents.
Эта функция была добавлена в Qt 4.5.
[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.
[slot] bool QSvgRenderer::load(const QString &filename)
Загружает файл SVG, указанный filename, возвращая true, если содержимое было успешно обработано; в противном случае возвращает false.
[slot] bool QSvgRenderer::load(const QByteArray &contents)
Загружает указанное содержимое в формате SVG, возвращая true, если содержимое было успешно обработано; в противном случае возвращает false.
[slot] bool QSvgRenderer::load(QXmlStreamReader *contents)
Загружает указанный SVG в contents, возвращая true, если содержимое было успешно обработано; в противном случае возвращает false.
Читатель будет использоваться с текущей позиции. Если contents является null, поведение не определено.
Эта функция была добавлена в Qt 4.5.
QMatrix QSvgRenderer::matrixForElement(const QString &id) const
Возвращает матрицу преобразования для элемента с заданным id. Матрица является произведением преобразования элементов-родителей. Преобразование самого элемента не включается.
Чтобы найти прямоугольник ограничивающей рамки элемента в логических координатах, можно применить матрицу к прямоугольнику, возвращённому из boundsOnElement().
Эта функция была добавлена в Qt 4.2.
См. также boundsOnElement().
[slot] void QSvgRenderer::render(QPainter *painter)
Отображает текущий документ или текущую кадр анимированного документа с помощью указанного painter.
[slot] void QSvgRenderer::render(QPainter *painter, const QRectF &bounds)
Отображает текущий документ или текущую кадр анимированного документа с помощью указанного painter в заданной bounds внутри рендера. Если прямоугольник ограничивающей рамки не указан, файл SVG отображается на весь устройство рисования.
[slot] void QSvgRenderer::render(QPainter *painter, const QString &elementId, const QRectF &bounds = QRectF())
Отображает заданный элемент с elementId с помощью указанного painter в заданной bounds. Если прямоугольник ограничивающей рамки не указан, SVG-элемент отображается на всё устройство рисования.
[signal] void QSvgRenderer::repaintNeeded()
Этот сигнал излучается всякий раз, когда необходимо обновить отображение документа, обычно для целей анимации.
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/archives/qt-5.11/qsvgrenderer.html