Класс QQuickPaintedItem
Класс QQuickPaintedItem предоставляет способ использования API QPainter в QML Scene Graph. Подробнее...
| Заголовок: | #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) | |
| 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 |
Сигналы
| void | fillColorChanged() |
| void | renderTargetChanged() |
| void | textureSizeChanged() |
Переопределённые защищённые функции
| virtual void | itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &value) override |
| virtual void | releaseResources() override |
| virtual QSGNode * | updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *data) override |
Подробное описание
Класс QQuickPaintedItem позволяет использовать API QPainter с QML Scene Graph. Он создаёт текстурированный прямоугольник в Scene Graph и использует 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.0/qquickpainteditem.html