Класс QSvgRenderer
Класс QSvgRenderer используется для отрисовки содержимого файлов SVG на устройствах рисования. Подробнее...
| Заголовок: | #include <QSvgRenderer> |
| CMake: | find_package(Qt6 COMPONENTS Svg REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Svg) |
| qmake: | QT += svg |
| Наследует: | QObject |
Примечание: Все функции в этом классе являются взаимопомещаемыми.
Свойства
- aspectRatioMode : Qt::AspectRatioMode
- 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 |
| Qt::AspectRatioMode | aspectRatioMode() const |
| QRectF | boundsOnElement(const QString &id) const |
| QSize | defaultSize() const |
| bool | elementExists(const QString &id) const |
| int | framesPerSecond() const |
| bool | isValid() const |
| void | setAspectRatioMode(Qt::AspectRatioMode mode) |
| void | setFramesPerSecond(int num) |
| void | setViewBox(const QRect &viewbox) |
| void | setViewBox(const QRectF &viewbox) |
| QTransform | transformForElement(const QString &id) const |
| 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() для отрисовки текущего документа или текущей кадра анимированного документа с помощью заданного рисовальщика.
Функция defaultSize() предоставляет информацию о необходимом пространстве для отрисовки загруженного файла SVG. Это полезно для устройств рисования, таких как QWidget, которые часто должны предоставить размер подсказки своему родительскому макету. Размер изображения по умолчанию может отличаться от его видимой области, найденной с помощью свойства viewBox.
Поддерживаются анимированные изображения SVG и их можно контролировать с помощью простого набора функций и свойств:
- Функция animated() указывает, содержит ли изображение информацию об анимации.
- Свойство framesPerSecond содержит частоту воспроизведения анимации.
Наконец, класс QSvgRenderer предоставляет сигнал repaintNeeded(), который генерируется всякий раз, когда необходимо обновить отрисовку документа.
См. также QSvgWidget, Классы Qt SVG C++, Пример SVG Viewer и QPicture.
END_OF_DOCUMENT_MARKER ```Документация свойств
[since 5.15] aspectRatioMode : Qt::AspectRatioMode
как отрисовка соответствует соотношению сторон SVG view box
Допустимые режимы:
- Qt::IgnoreAspectRatio (по умолчанию): соотношение сторон игнорируется, и отрисовка растягивается до целевых границ.
- Qt::KeepAspectRatio: отрисовка центрируется и масштабируется настолько, насколько это возможно, в пределах целевых границ, сохраняя при этом соотношение сторон.
Это свойство было введено в Qt 5.15.
Функции доступа:
| Qt::AspectRatioMode | aspectRatioMode() const |
| void | setAspectRatioMode(Qt::AspectRatioMode mode) |
framesPerSecond : int
Это свойство содержит количество кадров в секунду, которое должно отображаться
Количество кадров в секунду равно 0, если текущий документ не является анимированным.
Функции доступа:
| int | framesPerSecond() const |
| void | setFramesPerSecond(int num) |
См. также animated().
viewBox : QRectF
Это свойство содержит прямоугольник, определяющий видимую область документа в логических координатах
Функции доступа:
| QRectF | viewBoxF() const |
| void | setViewBox(const QRect &viewbox) |
| void | setViewBox(const QRectF &viewbox) |
Документация функций-членов
QSvgRenderer::QSvgRenderer(QXmlStreamReader *contents, QObject *parent = nullptr)
Создает новый рендерер с заданным parent и загружает данные SVG, используя указанный в contents поток чтения.
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 пустой, поведение не определено.
[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. Матрица преобразования родительских элементов не влияет на границы элемента.
См. также transformForElement().
QSize QSvgRenderer::defaultSize() const
Возвращает размер по умолчанию содержимого документа.
bool QSvgRenderer::elementExists(const QString &id) const
Возвращает true, если элемент с заданным id существует в текущем проанализированном файле SVG и является рендерируемым элементом.
Примечание: этот метод возвращает true только для элементов, которые могут быть отображены. Это означает, что элементы, которые считаются частью свойств заливки/контура, например, радиальные градиенты, даже если они помечены атрибутами "id", не будут найдены этим методом.
bool QSvgRenderer::isValid() const
Возвращает true, если существует допустимый текущий документ; в противном случае возвращает false.
[since 5.15] QTransform QSvgRenderer::transformForElement(const QString &id) const
Возвращает матрицу преобразования для элемента с заданным id. Матрица является результатом умножения матриц преобразования родительских элементов. Преобразование самого элемента не включено.
Чтобы найти прямоугольник ограничительной области элемента в логических координатах, вы можете применить матрицу к прямоугольнику, возвращаемому boundsOnElement().
Эта функция была введена в Qt 5.15.
См. также 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-6.0/qsvgrenderer.html