Класс QQuickPaintedItem
Класс QQuickPaintedItem предоставляет способ использования API QPainter в графическом представлении QML. Подробнее...
| Заголовок: | #include <QQuickPaintedItem> |
| qmake: | QT += quick |
| Наследуется от: | QQuickItem |
Открытые типы
| Перечисление | PerformanceHint { FastFBOResizing } |
| Флаги | PerformanceHints |
| Перечисление | RenderTarget { Image, FramebufferObject, InvertedYFramebufferObject } |
Свойства
- fillColor : QColor
- renderTarget : RenderTarget
- textureSize : QSize
- 23 свойства унаследованы от QQuickItem
- 1 свойство унаследовано от QObject
Открытые функции
| QQuickPaintedItem(QQuickItem *parent = Q_NULLPTR) | |
| виртуальный | ~QQuickPaintedItem() |
| bool | antialiasing() const |
| QColor | fillColor() const |
| bool | mipmap() const |
| bool | opaquePainting() const |
| виртуальный void | paint(QPainter *painter) = 0 |
| PerformanceHints | performanceHints() const |
| RenderTarget | renderTarget() const |
| void | setAntialiasing(bool enable) |
| void | setFillColor(const QColor &) |
| void | setMipmap(bool enable) |
| void | setOpaquePainting(bool opaque) |
| void | setPerformanceHint(PerformanceHint hint, bool enabled = true) |
| void | setPerformanceHints(PerformanceHints hints) |
| void | setRenderTarget(RenderTarget target) |
| void | setTextureSize(const QSize &size) |
| QSize | textureSize() const |
| void | update(const QRect &rect = QRect()) |
Переопределённые открытые функции
| виртуальный bool | isTextureProvider() const |
| виртуальный QSGTextureProvider * | textureProvider() const |
- 92 открытые функции унаследованы от QQuickItem
- 31 открытая функция унаследована от QObject
- 2 открытые функции унаследованы от QQmlParserStatus
Сигналы
| void | fillColorChanged() |
| void | renderTargetChanged() |
| void | textureSizeChanged() |
- 1 сигнал унаследован от QQuickItem
- 2 сигнала унаследованы от QObject
Переопределённые защищённые функции
| виртуальный void | itemChange(ItemChange, const ItemChangeData &) |
| виртуальный void | releaseResources() |
| виртуальный QSGNode * | updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *data) |
- 33 защищённые функции унаследованы от QQuickItem
- 9 защищённых функций унаследованы от QObject
Дополнительные унаследованные члены
- 1 открытый слот унаследован от QQuickItem
- 1 открытый слот унаследован от QObject
- 11 статические открытые члены унаследованы от QObject
- 33 защищённые функции унаследованы от QQuickItem
- 9 защищённых функций унаследованы от QObject
Подробное описание
Класс QQuickPaintedItem предоставляет способ использования API QPainter в графическом представлении QML.
Класс QQuickPaintedItem позволяет использовать API QPainter с QML графическим представлением. Он создаёт текстурированный прямоугольник в графическом представлении и использует QPainter для рисования на текстуре. Цель отрисовки может быть либо QImage, либо QOpenGLFramebufferObject. Когда целью отрисовки является QImage, QPainter сначала рисует в изображение, а затем содержимое загружается в текстуру. При использовании QOpenGLFramebufferObject, QPainter рисует напрямую на текстуру. Вызовите update() для запуска перерисовки.
Чтобы включить антиалиасинг в QPainter, используйте setAntialiasing().
Чтобы написать свой собственный элемент отрисовки, сначала создайте подкласс QQuickPaintedItem, а затем начните с реализации единственной чисто виртуальной открытой функции: paint(), которая реализует фактическое рисование. Рисование будет выполняться внутри прямоугольника, охватывающего от 0,0 до width(),height().
Документация по типам членов
перечисление QQuickPaintedItem::PerformanceHintфлаги QQuickPaintedItem::PerformanceHints
Это перечисление описывает флаги, которые можно включить для повышения производительности отрисовки в QQuickPaintedItem. По умолчанию ни один из этих флагов не установлен.
| Константа | Значение | Описание |
|---|---|---|
QQuickPaintedItem::FastFBOResizing |
0x1 |
Изменение размера FBO может быть дорогостоящей операцией для некоторых реализаций драйверов OpenGL. Чтобы обойти эту проблему, можно установить этот флаг, чтобы QQuickPaintedItem выделил один большой буфер кадра и вместо этого рисовал в подобласти. Это экономит перерасчет размера за счет использования большего объема памяти. Обратите внимание, что эта проблема не является распространенной. |
Тип PerformanceHints является псевдонимом для QFlags<PerformanceHint>. Он хранит логическое ИЛИ комбинацию значений PerformanceHint.
перечисление QQuickPaintedItem::RenderTarget
Это перечисление описывает целевые области рендеринга QQuickPaintedItem. Целевая область рендеринга — это поверхность, на которую QPainter рисует перед отображением элемента на экране.
| Константа | Значение | Описание |
|---|---|---|
QQuickPaintedItem::Image |
0 |
Значение по умолчанию; QPainter рисует в QImage с помощью растрового движка отрисовки. Содержимое изображения необходимо загрузить в графическую память позже, эта операция может быть медленной, если элемент большой. Эта целевая область рендеринга позволяет высокое качество сглаживания и быстрое изменение размера элемента. |
QQuickPaintedItem::FramebufferObject |
1 |
QPainter рисует в QOpenGLFramebufferObject с помощью движка отрисовки GL. Отрисовка может быть быстрее, так как не требуется загрузка текстуры, но качество сглаживания не так хорошо, как при использовании изображения. Эта целевая область рендеринга позволяет более быструю отрисовку в некоторых случаях, но следует избегать ее использования, если элемент часто изменяет размер. |
QQuickPaintedItem::InvertedYFramebufferObject |
2 |
Точно так же, как и для FramebufferObject выше, за исключением того, что после завершения рисования, перед отображением нарисованного изображения оно переворачивается относительно оси X, так что самые верхние пиксели теперь находятся внизу. Поскольку это делается с координатами текстуры OpenGL, это намного более быстрый способ достижения этого эффекта, чем использование преобразования художника. |
См. также setRenderTarget().
Документация по свойствам
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.
Функции доступа:
| RenderTarget | renderTarget() const |
| void | setRenderTarget(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 = Q_NULLPTR)
Создает QQuickPaintedItem с заданным элементом parent.
[virtual] QQuickPaintedItem::~QQuickPaintedItem()
Уничтожает QQuickPaintedItem.
bool QQuickPaintedItem::antialiasing() const
Возвращает true, если сглаживание включено; в противном случае возвращает false.
По умолчанию сглаживание не включено.
См. также setAntialiasing().
[virtual] bool QQuickPaintedItem::isTextureProvider() const
Переопределено из QQuickItem::isTextureProvider().
[virtual protected] void QQuickPaintedItem::itemChange(ItemChange, const ItemChangeData &)
bool QQuickPaintedItem::mipmap() const
Возвращает true, если мип-мапы включены; в противном случае возвращает false.
По умолчанию мип-мапы не включены.
См. также setMipmap().
bool QQuickPaintedItem::opaquePainting() const
Возвращает true, если элемент непрозрачен; в противном случае возвращает false.
По умолчанию нарисованные элементы не являются непрозрачными.
См. также setOpaquePainting().
[pure virtual] void QQuickPaintedItem::paint(QPainter *painter)
Эта функция, которая обычно вызывается QML-графом сцены, рисует содержимое элемента в локальных координатах.
Базовая текстура будет иметь размер, определённый textureSize при установке, или размер элемента, умноженный на коэффициент пикселей устройства окна.
Функция вызывается после того, как элемент заполнен цветом fillColor.
Переопределите эту функцию в подклассе QQuickPaintedItem, чтобы предоставить реализацию рисования элемента, используя painter.
Примечание: QML-граф сцены использует два отдельных потока: основной поток выполняет действия, такие как обработка событий или обновление анимаций, а второй поток выполняет фактическую отрисовку OpenGL. Вследствие этого paint() вызывается не из основного потока GUI, а из потока рендеринга OpenGL. В момент вызова paint() поток GUI заблокирован, поэтому он потокобезопасен.
Предупреждение: Следует проявлять особую осторожность при создании QObjects, отправке сигналов, запуске таймеров и т. п. внутри этой функции, так как они будут иметь отношение к потоку отрисовки.
См. также width(), height() и textureSize.
PerformanceHints QQuickPaintedItem::performanceHints() const
Возвращает подсказки производительности.
По умолчанию никакие подсказки производительности не включены.
См. также setPerformanceHint() и setPerformanceHints().
[virtual protected] void QQuickPaintedItem::releaseResources()
Переопределено из QQuickItem::releaseResources().
void QQuickPaintedItem::setAntialiasing(bool enable)
Если enable равно true, включено сглаживание.
По умолчанию сглаживание не включено.
См. также antialiasing().
END_OF_DOCUMENT_MARKERvoid QQuickPaintedItem::setMipmap(bool enable)
Если enable имеет значение true, сглаживание по пирамидальной схеме (mipmap) включено для связанной текстуры.
Сглаживание по пирамидальной схеме увеличивает скорость отрисовки и уменьшает артефакты ступенчатости при масштабировании элемента.
По умолчанию, сглаживание по пирамидальной схеме выключено.
См. также mipmap().
void QQuickPaintedItem::setOpaquePainting(bool opaque)
Если opaque имеет значение true, элемент непрозрачен; в противном случае он считается полупрозрачным.
Непрозрачные элементы не смешиваются с остальной частью сцены. Установите это значение в true, если содержимое элемента непрозрачно, чтобы ускорить отрисовку.
По умолчанию, элементы отрисовки не являются непрозрачными.
См. также opaquePainting().
void QQuickPaintedItem::setPerformanceHint(PerformanceHint hint, bool enabled = true)
Устанавливает указанный параметр производительности hint для элемента, если enabled равно true; в противном случае параметр производительности очищается.
По умолчанию, никакой параметр производительности не включен.
См. также setPerformanceHints() и performanceHints().
void QQuickPaintedItem::setPerformanceHints(PerformanceHints hints)
Устанавливает параметры производительности на hints
По умолчанию, никакой параметр производительности не включен.
См. также setPerformanceHint() и performanceHints().
[virtual] QSGTextureProvider *QQuickPaintedItem::textureProvider() const
Переопределено из QQuickItem::textureProvider().
void QQuickPaintedItem::update(const QRect &rect = QRect())
Планирует перерисовку области, покрытой rect в данном элементе. Вы можете вызвать эту функцию всякий раз, когда ваш элемент необходимо перерисовать, например, если он изменяет свой вид или размер.
Эта функция не вызывает немедленную отрисовку; вместо этого она планирует запрос на отрисовку, который обрабатывается QML Scene Graph при отрисовке следующего кадра. Элемент будет перерисован только если он виден.
Обратите внимание, что вызов этой функции приведет к перерисовке всей сцены.
См. также paint().
[virtual protected] QSGNode *QQuickPaintedItem::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *data)
Переопределено из QQuickItem::updatePaintNode().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qquickpainteditem.html