Spec-Zone.ru › Qt 5.11

Класс QQuickPaintedItem

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

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

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

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

Свойства

  • fillColor : QColor
  • renderTarget : RenderTarget
  • textureSize : QSize
  • 24 свойства унаследованы от QQuickItem
  • 1 свойство унаследовано от QObject

Функции публичного доступа

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
  • 101 функция унаследована от QQuickItem
  • 34 функции унаследованы от QObject
  • 2 функции унаследованы от QQmlParserStatus

Сигналы

void fillColorChanged()
void renderTargetChanged()
void textureSizeChanged()
  • 2 сигнала унаследованы от QQuickItem
  • 2 сигнала унаследованы от QObject

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

virtual void itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &value) override
virtual void releaseResources() override
virtual QSGNode * updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *data) override
  • 33 защищённые функции унаследованы от QQuickItem
  • 9 защищённые функции унаследованы от QObject

Дополнительные унаследованные члены

  • 1 слот публичного доступа унаследован от QQuickItem
  • 1 слот публичного доступа унаследован от QObject
  • 1 переменная публичного доступа унаследована от QObject
  • 10 статических членов публичного доступа унаследованы от QObject
  • 33 защищённые функции унаследованы от QQuickItem
  • 9 защищённых функций унаследованы от QObject
  • 2 защищённых переменных унаследованы от QObject

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

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

Класс 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 — это typedef для QFlags<PerformanceHint>. Он хранит логическое ИЛИ комбинацию значений PerformanceHint.

enum QQuickPaintedItem::RenderTarget

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

Константа Значение Описание
QQuickPaintedItem::Image 0 Значение по умолчанию; QPainter рисует в QImage с использованием растрового движка отрисовки. Содержание изображения необходимо загрузить в графическую память впоследствии, эта операция может быть потенциально медленной, если элемент большой. Эта целевая область отрисовки позволяет высокое качество сглаживания и быструю перемену размера элемента.
QQuickPaintedItem::FramebufferObject 1 QPainter рисует в QOpenGLFramebufferObject с использованием движка отрисовки OpenGL. Отрисовка может быть быстрее, так как загрузка текстуры не требуется, но качество сглаживания не такое хорошее, как при использовании изображения. Эта целевая область отрисовки позволяет ускорить отрисовку в некоторых случаях, но следует избегать её использования, если элемент часто изменяет свой размер.
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().

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

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

bool QQuickPaintedItem::mipmap() const

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

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

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

bool QQuickPaintedItem::opaquePainting() const

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

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

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

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

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

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

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

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

Примечание: Графический движок QML использует две отдельные нити: главную нить для обработки событий и обновления анимаций, и вторую нить для фактического рендеринга 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().

void QQuickPaintedItem::setOpaquePainting(bool opaque)

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

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

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

См. также 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().

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

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

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

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

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

Переопределено из QQuickItem::updatePaintNode().

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

Spec-Zone.ru

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