Spec-Zone.ru › Qt 5.6

Класс 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
  • 92 открытые функции унаследованы от QQuickItem
  • 31 открытая функция унаследована от 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, либо QOpenGLFramebufferObject. Когда целью отрисовки является QImage, QPainter сначала рисует в изображение, а затем содержимое загружается в текстуру. При использовании QOpenGLFramebufferObject, QPainter рисует напрямую на текстуру. Вызовите update() для запуска перерисовки.

Чтобы включить антиалиасинг в QPainter, используйте setAntialiasing().

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

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

перечисление 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.

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

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

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

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

PerformanceHints QQuickPaintedItem::performanceHints() const

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

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

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

[virtual protected] void QQuickPaintedItem::releaseResources()

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

void QQuickPaintedItem::setAntialiasing(bool enable)

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

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

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

END_OF_DOCUMENT_MARKER

void QQuickPaintedItem::setMipmap(bool enable)

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

Сглаживание по пирамидальной схеме увеличивает скорость отрисовки и уменьшает артефакты ступенчатости при масштабировании элемента.

По умолчанию, сглаживание по пирамидальной схеме выключено.

См. также 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 Scene Graph при отрисовке следующего кадра. Элемент будет перерисован только если он виден.

Обратите внимание, что вызов этой функции приведет к перерисовке всей сцены.

См. также 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/archives/qt-5.6/qquickpainteditem.html

Spec-Zone.ru

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