Класс QGraphicsSvgItem
Класс QGraphicsSvgItem — это QGraphicsItem, который может использоваться для отрисовки содержимого SVG-файлов. Подробнее...
| Заголовок: | #include <QGraphicsSvgItem> |
| qmake: | QT += svg |
| С момента: | Qt 4.2 |
| Наследует: | QGraphicsObject |
Этот класс был представлен в Qt 4.2.
Свойства
- elementId : QString
- maximumCacheSize : QSize
Открытые функции
| QGraphicsSvgItem(const QString &fileName, QGraphicsItem *parent = nullptr) | |
| QGraphicsSvgItem(QGraphicsItem *parent = nullptr) | |
| QString | elementId() const |
| QSize | maximumCacheSize() const |
| QSvgRenderer * | renderer() const |
| void | setElementId(const QString &id) |
| void | setMaximumCacheSize(const QSize &size) |
| void | setSharedRenderer(QSvgRenderer *renderer) |
Переопределённые открытые функции
| virtual QRectF | boundingRect() const override |
| virtual void | paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override |
| virtual int | type() const override |
Подробное описание
QGraphicsSvgItem предоставляет способ отрисовки SVG-файлов на QGraphicsView. QGraphicsSvgItem может быть создан, передав SVG-файл, который нужно отрисовать, в его конструктор, или явно задав общий QSvgRenderer на нём.
Обратите внимание, что назначение QSvgRenderer на QGraphicsSvgItem не даёт элементу права владения этим рендерером, поэтому при использовании метода setSharedRenderer() необходимо убедиться, что срок жизни объекта QSvgRenderer будет по крайней мере таким же, как и у QGraphicsSvgItem.
QGraphicsSvgItem позволяет отрисовывать только части SVG-файлов с помощью setElementId. Если вызовут метод setElementId(), будет отрисован только элемент SVG (и его потомки) с заданным идентификатором. Это удобный способ выборочной отрисовки больших SVG-файлов, содержащих множество отдельных элементов. Например, следующий код отрисовывает только джокеров из SVG-файла, содержащего всю колоду карт:
QSvgRenderer *renderer = new QSvgRenderer(QLatin1String("SvgCardDeck.svg"));
QGraphicsSvgItem *black = new QGraphicsSvgItem();
QGraphicsSvgItem *red = new QGraphicsSvgItem();
black->setSharedRenderer(renderer);
black->setElementId(QLatin1String("black_joker"));
red->setSharedRenderer(renderer);
red->setElementId(QLatin1String("red_joker")); Размер элемента можно задать, непосредственно манипулируя матрицей преобразования элемента.
По умолчанию отрисовка SVG кэшируется с помощью режима QGraphicsItem::DeviceCoordinateCache для ускорения отображения элементов. Кэширование можно отключить, передав QGraphicsItem::NoCache в метод QGraphicsItem::setCacheMode().
См. также QSvgWidget, Qt SVG классы C++, QGraphicsItem и QGraphicsView.
Документация по свойствам
elementId : QString
Это свойство содержит XML-идентификатор элемента.
Это свойство было представлено в Qt 4.6.
Функции доступа:
| QString | elementId() const |
| void | setElementId(const QString &id) |
maximumCacheSize : QSize
Это свойство содержит максимальный размер кэша координат устройства для данного элемента.
Это свойство было представлено в Qt 4.6.
Функции доступа:
| QSize | maximumCacheSize() const |
| void | setMaximumCacheSize(const QSize &size) |
Документация по функциям-членам
QGraphicsSvgItem::QGraphicsSvgItem(const QString &fileName, QGraphicsItem *parent = nullptr)
Конструирует новый элемент с заданным parent и загружает содержимое SVG-файла с заданным fileName.
QGraphicsSvgItem::QGraphicsSvgItem(QGraphicsItem *parent = nullptr)
Конструирует новый элемент SVG с заданным parent.
[override virtual] QRectF QGraphicsSvgItem::boundingRect() const
Переопределяет: QGraphicsItem::boundingRect() const.
Возвращает ограничивающую прямоугольную область этого элемента.
QString QGraphicsSvgItem::elementId() const
Возвращает XML-идентификатор элемента, который в данный момент отрисовывается. Возвращает пустую строку, если отрисовывается весь файл.
Примечание: Функция-член для свойства elementId.
См. также setElementId().
QSize QGraphicsSvgItem::maximumCacheSize() const
Возвращает текущий максимальный размер кэша координат устройства для данного элемента. Если элемент кэшируется с помощью режима QGraphicsItem::DeviceCoordinateCache, кэширование обходится, если размер элемента в координатах устройства больше, чем максимальный размер.
По умолчанию максимальный размер кэша составляет 1024x768. QPixmapCache::cacheLimit() даёт совокупные границы всего кэша, в то время как maximumCacheSize() относится к максимальному размеру кэша для этого конкретного элемента.
Примечание: Функция-член для свойства maximumCacheSize.
См. также setMaximumCacheSize() и QGraphicsItem::cacheMode().
[override virtual] void QGraphicsSvgItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr)
Переопределяет: QGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget).
QSvgRenderer *QGraphicsSvgItem::renderer() const
Возвращает текущий используемый QSvgRenderer.
void QGraphicsSvgItem::setElementId(const QString &id)
Устанавливает XML-идентификатор элемента на id.
Примечание: Функция-член для свойства elementId.
См. также elementId().
void QGraphicsSvgItem::setMaximumCacheSize(const QSize &size)
Устанавливает максимальный размер кэша координат устройства элемента на size. Если элемент кэшируется с помощью режима QGraphicsItem::DeviceCoordinateCache, кэширование обходится, если размер элемента в координатах устройства больше, чем size.
Кэш соответствует QPixmap, который используется для кэширования результатов отрисовки. Используйте QPixmapCache::setCacheLimit() для установки ограничений на весь кэш и используйте setMaximumCacheSize(), когда задаёте размер кэша для отдельных элементов.
Примечание: Метод установки свойства maximumCacheSize.
См. также maximumCacheSize() и QGraphicsItem::cacheMode().
void QGraphicsSvgItem::setSharedRenderer(QSvgRenderer *renderer)
Устанавливает renderer в качестве общего QSvgRenderer для элемента. С помощью этого метода можно использовать один и тот же QSvgRenderer для нескольких элементов. Это означает, что файл SVG будет проанализирован только один раз. QSvgRenderer, переданный в этот метод, должен существовать до тех пор, пока используется этот элемент.
[override virtual] int QGraphicsSvgItem::type() const
Переопределяет: QGraphicsItem::type() const.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qgraphicssvgitem.html