Класс 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