Класс QGraphicsSvgItem
Класс QGraphicsSvgItem — это QGraphicsItem, который может использоваться для отрисовки содержимого файлов SVG. Подробнее...
| Заголовок: | #include <QGraphicsSvgItem> |
| CMake: | find_package(Qt6 COMPONENTS SvgWidgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::SvgWidgets) |
| qmake: | QT += svgwidgets |
| Наследует: | QGraphicsObject |
Свойства
- 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-идентификатор элемента.
Функции доступа:
| QString | elementId() const |
| void | setElementId(const QString &id) |
maximumCacheSize : QSize
Это свойство содержит максимальный размер кэша координат устройства для данного элемента.
Функции доступа:
| 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-ID элемента, который в данный момент отрисовывается. Возвращает пустую строку, если отрисовывается весь файл.
Примечание: Функция-получатель для свойства 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-6.2/qgraphicssvgitem.html