Spec-Zone.ru › Qt 6.1

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

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

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

bool QQuickPaintedItem::opaquePainting() const

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

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

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

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

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

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

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

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

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

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

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

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

void QQuickPaintedItem::setOpaquePainting(bool opaque)

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

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

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

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

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

Устанавливает заданную подсказку производительности для элемента, если 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.1/qquickpainteditem.html

Spec-Zone.ru

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