Spec-Zone.ru › Qt 5.9

Класс QQuickPaintedItem

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

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

Открытые типы

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

Свойства

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

Открытые функции

QQuickPaintedItem(QQuickItem *parent = Q_NULLPTR)
виртуальный ~QQuickPaintedItem()
bool antialiasing() const
QColor fillColor() const
bool mipmap() const
bool opaquePainting() const
виртуальный void paint(QPainter *painter) = 0
PerformanceHints performanceHints() const
RenderTarget renderTarget() const
void setAntialiasing(bool enable)
void setFillColor(const QColor &)
void setMipmap(bool enable)
void setOpaquePainting(bool opaque)
void setPerformanceHint(PerformanceHint hint, bool enabled = true)
void setPerformanceHints(PerformanceHints hints)
void setRenderTarget(RenderTarget target)
void setTextureSize(const QSize &size)
QSize textureSize() const
void update(const QRect &rect = QRect())

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

виртуальный bool isTextureProvider() const
виртуальный QSGTextureProvider * textureProvider() const
  • 95 открытых функций унаследовано от QQuickItem
  • 32 открытых функций унаследовано от QObject
  • 2 открытых функции унаследовано от QQmlParserStatus

Сигналы

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

Реализованные защищённые функции

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

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

  • 1 общедоступный слот унаследованный от QQuickItem
  • 1 общедоступный слот унаследованный от QObject
  • 11 статических общедоступных членов унаследованных от QObject
  • 33 защищённых функций унаследованных от QQuickItem
  • 9 защищённых функций унаследованных от 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::PerformanceHintflags 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 с использованием движка рисования GL. Рисование может быть быстрее, так как загрузка текстур не требуется, но качество сглаживания не так хорошо, как при использовании изображения. Эта целевая область рендеринга позволяет более быстрое рендеринг в некоторых случаях, но следует избегать её использования, если элемент часто изменяет размер.
QQuickPaintedItem::InvertedYFramebufferObject 2 Точно так же, как и для FramebufferObject выше, за исключением того, что после завершения рисования, перед отрисовкой нарисованного изображения оно переворачивается по оси X, так что самые верхние пиксели теперь находятся внизу. Поскольку это выполняется с координатами текстуры OpenGL, это гораздо более быстрый способ достижения этого эффекта, чем использование преобразования painter.

См. также 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. Запросы на эти значения будут проигнорированы.

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

RenderTarget renderTarget() const
void setRenderTarget(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 = Q_NULLPTR)

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

[virtual] QQuickPaintedItem::~QQuickPaintedItem()

Уничтожает QQuickPaintedItem.

bool QQuickPaintedItem::antialiasing() const

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

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

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

[virtual] bool QQuickPaintedItem::isTextureProvider() const

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

[virtual protected] void QQuickPaintedItem::itemChange(ItemChange, const ItemChangeData &)

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.

PerformanceHints QQuickPaintedItem::performanceHints() const

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

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

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

[virtual protected] void QQuickPaintedItem::releaseResources()

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

void QQuickPaintedItem::setAntialiasing(bool enable)

Если enable имеет значение true, отображение сглаживания включено.

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

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

void QQuickPaintedItem::setMipmap(bool enable)

Если enable имеет значение true, сглаживание по пирамидальным уровням (mipmapping) включено для связанной текстуры.

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

По умолчанию mipmapping отключен.

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

void QQuickPaintedItem::setOpaquePainting(bool opaque)

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

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

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

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

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

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

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

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

void QQuickPaintedItem::setPerformanceHints(PerformanceHints hints)

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

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

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

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

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

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

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

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

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

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

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

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

Spec-Zone.ru

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