Spec-Zone.ru › Qt

Класс QQuickPaintedItem

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

Заголовок: #include <QQuickPaintedItem>
CMake: find_package(Qt6 COMPONENTS Quick REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmake: QT += quick
Наследует: QQuickItem
  • Список всех членов, включая унаследованные
  • Устаревшие члены

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

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

Свойства

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

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

QQuickPaintedItem(QQuickItem *parent = nullptr)
виртуальный ~QQuickPaintedItem() override
bool antialiasing() const
QColor fillColor() const
bool mipmap() const
bool opaquePainting() const
виртуальный 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())

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

виртуальный bool isTextureProvider() const override
виртуальный QSGTextureProvider * textureProvider() const override

Сигналы

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

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

виртуальный void itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &value) override
виртуальный void releaseResources() override
виртуальный QSGNode * updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *data) override

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

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

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

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

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

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

Перечисление QQuickPaintedItem::PerformanceHintФлаги QQuickPaintedItem::PerformanceHints

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

Константа Значение Описание
QQuickPaintedItem::FastFBOResizing 0x1 Начиная с Qt 6.0, это значение игнорируется.

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

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

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

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

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

END_OF_DOCUMENT_MARKER

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

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.

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

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 использует две отдельные нити: главная нить выполняет операции, такие как обработка событий или обновление анимаций, а вторая нить выполняет фактическое обновление графических ресурсов и запись вызовов отрисовки. В результате paint() не вызывается из основной нити GUI, а из нити рендеринга с поддержкой GL. В момент вызова 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, если содержимое элемента непрозрачно, чтобы ускорить рендеринг.

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

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

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

Spec-Zone.ru

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