Spec-Zone.ru › Qt 5.14

Класс QQuickPaintedItem

Класс QQuickPaintedItem предоставляет способ использования API QPainter в графическом дереве QML. Подробнее...

Заголовок: #include <QQuickPaintedItem>
qmake: QT += quick
Наследует: QQuickItem
  • Список всех членов, включая унаследованные
  • Устаревшие члены

Типы public

перечисление PerformanceHint { FastFBOResizing }
флаги PerformanceHints
перечисление RenderTarget { Image, FramebufferObject, InvertedYFramebufferObject }

Свойства

  • fillColor : QColor
  • renderTarget : RenderTarget
  • textureSize : QSize

Функции public

QQuickPaintedItem(QQuickItem *parent = nullptr)
virtual ~QQuickPaintedItem() override
bool antialiasing() const
QColor fillColor() const
bool mipmap() const
bool opaquePainting() const
virtual void paint(QPainter *painter) = 0
QQuickPaintedItem::PerformanceHints performanceHints() const
QQuickPaintedItem::RenderTarget renderTarget() const
void setAntialiasing(bool enable)
void setFillColor(const QColor &)
void setMipmap(bool enable)
void setOpaquePainting(bool opaque)
void setPerformanceHint(QQuickPaintedItem::PerformanceHint hint, bool enabled = true)
void setPerformanceHints(QQuickPaintedItem::PerformanceHints hints)
void setRenderTarget(QQuickPaintedItem::RenderTarget target)
void setTextureSize(const QSize &size)
QSize textureSize() const
void update(const QRect &rect = QRect())

Переопределенные функции public

virtual bool isTextureProvider() const override
virtual QSGTextureProvider * textureProvider() const override

Сигналы

void fillColorChanged()
void renderTargetChanged()
void textureSizeChanged()

Переопределенные защищенные функции

virtual void itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &value) override
virtual void releaseResources() override
virtual QSGNode * updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *data) override

Подробное описание

Класс QQuickPaintedItem позволяет использовать API QPainter с графическим деревом QML. Он настраивает текстурированный прямоугольник в графическом дереве и использует QPainter для рисования на текстуре. Цель рендеринга может быть либо QImage, либо, при использовании OpenGL, QOpenGLFramebufferObject. Когда целевым объектом является QImage, QPainter сначала рисует в изображение, а затем содержимое загружается в текстуру. Когда используется QOpenGLFramebufferObject, QPainter рисует непосредственно на текстуру. Вызовите update() для инициирования перерисовки.

Для того, чтобы QPainter мог выполнять рендеринг с антиалиасингом, используйте setAntialiasing().

Чтобы создать собственный элемент рисования, сначала создайте подкласс QQuickPaintedItem, а затем начните с реализации единственной чисто виртуальной публичной функции: paint(), которая реализует фактическое рисование. Рисование будет внутри прямоугольника, охватывающего координаты от 0,0 до width(),height().

Примечание: Важно понимать последствия для производительности, которые могут возникнуть при использовании таких элементов. См. QQuickPaintedItem::RenderTarget и QQuickPaintedItem::renderTarget.

Документация по типам членов

перечисление QQuickPaintedItem::PerformanceHintфлаги QQuickPaintedItem::PerformanceHints

Это перечисление описывает флаги, которые вы можете включить для повышения производительности рендеринга в QQuickPaintedItem. По умолчанию ни один из этих флагов не установлен.

Константа Значение Описание
QQuickPaintedItem::FastFBOResizing 0x1 Изменение размера FBO может быть дорогостоящей операцией для некоторых реализаций драйверов OpenGL. Чтобы обойти эту проблему, можно установить этот флаг, чтобы QQuickPaintedItem выделил один большой фреймбуфер и вместо этого рисовал в подрегионе. Это экономит ресурсы переизменения размера, но увеличивает использование памяти. Обратите внимание, что эта проблема встречается не так часто.

Тип PerformanceHints является псевдонимом для QFlags<PerformanceHint>. Он хранит логическое ИЛИ сочетание значений PerformanceHint.

перечисление QQuickPaintedItem::RenderTarget

Это перечисление описывает целевые объекты рендеринга QQuickPaintedItem. Целевой объект рендеринга — это поверхность, на которую QPainter рисует перед тем, как элемент будет отображен на экране.

Константа Значение Описание
QQuickPaintedItem::Image 0 По умолчанию; QPainter рисует в QImage с помощью растрового движка отрисовки. Содержимое изображения необходимо загрузить в графическую память после этого, эта операция может быть медленной, если элемент большой. Этот целевой объект отрисовки позволяет высокое качество сглаживания и быстрое изменение размера элементов.
QQuickPaintedItem::FramebufferObject 1 QPainter рисует в QOpenGLFramebufferObject с помощью движка отрисовки GL. Отрисовка может быть быстрее, так как загрузка текстуры не требуется, но качество сглаживания не такое хорошее, как при использовании изображения. Этот целевой объект отрисовки позволяет более быструю отрисовку в некоторых случаях, но следует избегать его использования, если элемент часто изменяет размер.
QQuickPaintedItem::InvertedYFramebufferObject 2 Точно так же, как для FramebufferObject выше, за исключением того, что после завершения отрисовки, перед отрисовкой нарисованного изображения, оно переворачивается по оси X, так что самые верхние пиксели теперь находятся внизу. Поскольку это выполняется с координатами текстуры OpenGL, это гораздо более быстрый способ достижения этого эффекта, чем использование преобразования художника.

См. также setRenderTarget().

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

fillColor : QColor

Это свойство содержит цвет заливки фона элемента.

По умолчанию цвет заливки установлен на Qt::transparent.

Функции доступа:

QColor fillColor() const
void setFillColor(const QColor &)

Сигнал уведомления:

void fillColorChanged()

renderTarget : RenderTarget

Это свойство содержит целевой объект отрисовки элемента.

Это свойство определяет, в какой целевой объект отрисовки QPainter выполняет отрисовку, это может быть QQuickPaintedItem::Image, QQuickPaintedItem::FramebufferObject или QQuickPaintedItem::InvertedYFramebufferObject.

Каждый из них имеет определенные преимущества, обычно производительность против качества. Использование объекта фреймбуфера предотвращает дорогостоящую загрузку содержимого изображения в текстуру в графической памяти, а использование изображения позволяет высокое качество сглаживания.

Предупреждение: Изменение размера объекта фреймбуфера — дорогостоящая операция, избегайте использования целевого объекта отрисовки QQuickPaintedItem::FramebufferObject, если элемент часто изменяет размер.

По умолчанию целевой объект отрисовки — QQuickPaintedItem::Image.

Примечание: Некоторые бэкэнды Qt Quick могут не поддерживать все варианты целевых объектов отрисовки. Например, бэкэнды, не использующие OpenGL, вероятно, не будут поддерживать QQuickPaintedItem::FramebufferObject и QQuickPaintedItem::InvertedYFramebufferObject. Запросы на эти объекты будут проигнорированы.

Функции доступа:

QQuickPaintedItem::RenderTarget renderTarget() const
void setRenderTarget(QQuickPaintedItem::RenderTarget target)

Сигнал уведомления:

void renderTargetChanged()

textureSize : QSize

Определяет размер текстуры.

Изменение размера текстуры не влияет на систему координат, используемую в paint(). Вместо этого применяется коэффициент масштабирования, поэтому отрисовка должна происходить внутри 0,0 до width(),height().

По умолчанию размер текстуры будет таким же, как размер этого элемента.

Примечание: Если элемент находится на окне с коэффициентом масштабирования пикселей устройства, отличным от 1, этот коэффициент масштабирования будет неявно применён к размеру текстуры.

Функции доступа:

QSize textureSize() const
void setTextureSize(const QSize &size)

Сигнал уведомления:

void textureSizeChanged()

Документация по членам-функциям

QQuickPaintedItem::QQuickPaintedItem(QQuickItem *parent = nullptr)

Создаёт QQuickPaintedItem с заданным элементом parent.

[override virtual] QQuickPaintedItem::~QQuickPaintedItem()

Удаляет QQuickPaintedItem.

bool QQuickPaintedItem::antialiasing() const

Возвращает true, если сглаживание включено; в противном случае возвращается false.

По умолчанию сглаживание не включено.

См. также setAntialiasing().

[override virtual] bool QQuickPaintedItem::isTextureProvider() const

Переопределяет: QQuickItem::isTextureProvider() const.

[override virtual protected] void QQuickPaintedItem::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &value)

Переопределяет: QQuickItem::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &value).

bool QQuickPaintedItem::mipmap() const

Возвращает true, если mipmap включен; в противном случае возвращается false.

По умолчанию mipmap не включен.

См. также setMipmap().

bool QQuickPaintedItem::opaquePainting() const

Возвращает true, если элемент непрозрачен; в противном случае возвращается false.

По умолчанию нарисованные элементы непрозрачны.

См. также setOpaquePainting().

[pure virtual] void QQuickPaintedItem::paint(QPainter *painter)

Эта функция, обычно вызываемая QML Scene Graph, рисует содержимое элемента в локальных координатах.

Базовая текстура будет иметь размер, определённый textureSize при установке или размер элемента, умноженный на коэффициент масштабирования пикселей окна.

Функция вызывается после того, как элемент был заполнен fillColor.

Переопределите эту функцию в подклассе QQuickPaintedItem, чтобы предоставить реализацию отрисовки элемента, используя painter.

Примечание: QML Scene Graph использует два отдельных потока: основной поток обрабатывает события и обновляет анимации, а второй поток выполняет фактическую отрисовку OpenGL. В результате paint() не вызывается из основного потока GUI, а из потока рендеринга, поддерживающего OpenGL. В момент вызова paint() основной поток GUI заблокирован, поэтому это безопасно для работы с потоками.

Предупреждение: При создании QObjects, отправке сигналов, запуске таймеров и т. п. внутри этой функции следует проявлять особую осторожность, поскольку они будут иметь отношение к потоку рендеринга.

См. также width(), height(), и textureSize.

QQuickPaintedItem::PerformanceHints QQuickPaintedItem::performanceHints() const

Возвращает параметры производительности.

По умолчанию параметры производительности не включены.

См. также setPerformanceHint() и setPerformanceHints().

[override virtual protected] void QQuickPaintedItem::releaseResources()

Переопределяет: QQuickItem::releaseResources().

void QQuickPaintedItem::setAntialiasing(bool enable)

Если enable равно true, сглаживание включено.

По умолчанию сглаживание не включено.

См. также antialiasing().

void QQuickPaintedItem::setMipmap(bool enable)

Если enable равно true, mipmap включён для связанной текстуры.

Mipmap увеличивает скорость рендеринга и уменьшает артефакты сглаживания при уменьшении размера элемента.

По умолчанию mipmap не включён.

См. также mipmap().

void QQuickPaintedItem::setOpaquePainting(bool opaque)

Если opaque имеет значение true, элемент является непрозрачным; в противном случае он считается полупрозрачным.

Непрозрачные элементы не смешиваются с остальной частью сцены; следует установить это значение в true, если содержимое элемента непрозрачно для ускорения отрисовки.

По умолчанию элементы, отрисовываемые с помощью paint, не являются непрозрачными.

См. также opaquePainting().

void QQuickPaintedItem::setPerformanceHint(QQuickPaintedItem::PerformanceHint hint, bool enabled = true)

Устанавливает указанный параметр производительности hint для элемента, если enabled имеет значение true; в противном случае параметр производительности очищается.

По умолчанию никакой параметр производительности не включён.

См. также setPerformanceHints() и performanceHints().

void QQuickPaintedItem::setPerformanceHints(QQuickPaintedItem::PerformanceHints hints)

Устанавливает параметры производительности в hints

По умолчанию никакой параметр производительности не включён.

См. также setPerformanceHint() и performanceHints().

[override virtual] QSGTextureProvider *QQuickPaintedItem::textureProvider() const

Реализует: QQuickItem::textureProvider() const.

void QQuickPaintedItem::update(const QRect &rect = QRect())

Планирует перерисовку области, покрываемой rect в этом элементе. Вы можете вызвать эту функцию всякий раз, когда ваш элемент необходимо перерисовать, например, если он изменил внешний вид или размер.

Эта функция не вызывает немедленную отрисовку; вместо этого она планирует запрос на отрисовку, который обрабатывается QML-графическим деревом при отрисовке следующего кадра. Элемент будет перерисован только если он видимый.

См. также paint().

[override virtual protected] QSGNode *QQuickPaintedItem::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *data)

Реализует: QQuickItem::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *updatePaintNodeData).

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qquickpainteditem.html

Spec-Zone.ru

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