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