Spec-Zone.ru › Qt

Класс 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.

Документация свойств

[since 5.15] aspectRatioMode : Qt::AspectRatioMode

как отрисовка соответствует соотношению сторон области просмотра SVG

Принятые режимы:

  • 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 внутри рисовальщика. Если 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.2/qsvgrenderer.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API