Spec-Zone.ru › Qt 5.15

Класс QQuickPaintedItem

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

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

Типы публичного доступа

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

Свойства

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

Публичные функции

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())

Переопределённые публичные функции

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, если mip-мапинг включён; в противном случае возвращает false.

По умолчанию mip-мапинг отключён.

См. также 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, mip-мапинг включён для связанной текстуры.

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

По умолчанию mip-мапинг отключён.

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

END_OF_DOCUMENT_MARKER

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.15/qquickpainteditem.html

Spec-Zone.ru

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