QQuickPaintedItem Class
QQuickPaintedItem 클래스는 QML 씬 그래프에서 QPainter API를 사용할 수 있는 방법을 제공합니다. 더 보기...
헤더: | #include <QQuickPaintedItem> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Quick) target_link_libraries(mytarget PRIVATE Qt6::Quick) |
qmake: | QT += quick |
상속합니다: | QQuickItem |
공용 유형
enum | PerformanceHint { FastFBOResizing } |
flags | PerformanceHints |
enum | 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을 사용하면 QML 씬 그래프에서 QPainter API를 사용할 수 있습니다. 씬 그래프에 텍스처 직사각형을 설정하고 QPainter 을 사용하여 텍스처에 페인팅합니다. Qt 6의 렌더 타깃은 항상 QImage 입니다. 렌더 타깃이 QImage 인 경우 QPainter 이 먼저 이미지에 렌더링된 다음 콘텐츠가 텍스처에 업로드됩니다. update ()를 호출하여 다시 그리기를 트리거합니다.
QPainter 에서 앤티 앨리어싱 렌더링을 수행하려면 setAntialiasing()을 사용합니다.
직접 칠한 항목을 작성하려면 먼저 QQuickPaintedItem의 서브클래스를 만든 다음 실제 그림을 구현하는 유일한 순수 가상 공용 함수인 paint()를 구현하는 것으로 시작합니다. 그림은 0,0에서 width(),height()에 이르는 직사각형 안에 그려집니다.
참고: 이러한 항목으로 인해 발생할 수 있는 성능 영향을 이해하는 것이 중요합니다. QQuickPaintedItem::RenderTarget 및 QQuickPaintedItem::renderTarget 을 참조하세요.
씬 그래프 - 페인팅된 항목 및 C++로 QML 확장 작성도참조하세요 .
멤버 유형 문서
열거형 QQuickPaintedItem::PerformanceHint
플래그 QQuickPaintedItem::PerformanceHints
이 열거형은 QQuickPaintedItem 에서 렌더링 성능을 향상시키기 위해 활성화할 수 있는 플래그를 설명합니다. 기본적으로 이 플래그는 설정되어 있지 않습니다.
Constant | 값 | 설명 |
---|---|---|
QQuickPaintedItem::FastFBOResizing | 0x1 | Qt 6.0부터 이 값은 무시됩니다. |
PerformanceHints 유형은 QFlags<성능 힌트>에 대한 typedef입니다. 퍼포먼스 힌트 값의 OR 조합을 저장합니다.
enum QQuickPaintedItem::RenderTarget
이 열거형은 QQuickPaintedItem 의 렌더 타깃을 설명합니다. 렌더 타깃은 아이템이 화면에 렌더링되기 전에 QPainter 페인트가 칠해지는 표면입니다.
Constant | 값 | 설명 |
---|---|---|
QQuickPaintedItem::Image | 0 | 기본값; QPainter 래스터 페인트 엔진을 사용하여 QImage 에 페인트합니다. 이미지의 콘텐츠는 나중에 그래픽 메모리에 업로드해야 하므로 항목이 큰 경우 이 작업이 느려질 수 있습니다. 이 렌더 타겟을 사용하면 고품질 앤티 앨리어싱과 빠른 아이템 크기 조정이 가능합니다. |
QQuickPaintedItem::FramebufferObject | 1 | Qt 6.0부터는 이 값이 무시됩니다. |
QQuickPaintedItem::InvertedYFramebufferObject | 2 | Qt 6.0부터 이 값은 무시됩니다. |
setRenderTarget()도 참조하십시오 .
속성 문서
fillColor : QColor
이 속성은 항목의 배경 채우기 색상을 저장합니다.
기본적으로 채우기 색상은 Qt::transparent 으로 설정됩니다.
배경 채우기를 비활성화하려면 채우기 색상을 잘못된 색상(예: QColor())으로 설정합니다. 이렇게 하면 성능이 향상될 수 있으며 paint() 함수가 각 프레임의 모든 픽셀에 그리는 경우 안전하게 사용할 수 있습니다.
함수 액세스:
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() |
멤버 함수 문서
[explicit]
QQuickPaintedItem::QQuickPaintedItem(QQuickItem *parent = nullptr)
주어진 parent 아이템으로 QQuickPaintedItem을 생성합니다.
[override virtual noexcept]
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 변경, const QQuickItem::ItemChangeData &value).
bool QQuickPaintedItem::mipmap() const
밉맵이 활성화되면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.
기본적으로 밉매핑은 활성화되지 않습니다.
setMipmap()도 참조하세요 .
bool QQuickPaintedItem::opaquePainting() const
이 항목이 불투명하면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.
기본적으로 페인트된 항목은 불투명하지 않습니다.
setOpaquePainting()도 참조하세요 .
[pure virtual]
void QQuickPaintedItem::paint(QPainter *painter)
이 함수는 일반적으로 QML 씬 그래프에서 호출되며, 항목의 내용을 로컬 좌표로 그립니다.
기본 텍스처는 설정 시 textureSize 에 정의된 크기 또는 항목의 크기에 창의 디바이스 픽셀 비율을 곱한 값을 갖습니다.
이 함수는 항목이 fillColor 로 채워진 후에 호출됩니다.
QQuickPaintedItem 서브클래스에서 이 함수를 다시 구현하여 painter 을 사용하여 항목의 페인팅 구현을 제공합니다.
참고: QML 씬 그래프는 두 개의 별도 스레드를 사용하며, 메인 스레드는 이벤트 처리 또는 애니메이션 업데이트와 같은 작업을 수행하고 두 번째 스레드는 그래픽 리소스 업데이트의 실제 발행 및 그리기 호출의 기록을 수행합니다. 따라서 paint()는 메인 GUI 스레드가 아니라 GL이 활성화된 렌더러 스레드에서 호출됩니다. paint()가 호출되는 순간 GUI 스레드는 차단되므로 스레드 안전합니다.
경고: 이 함수 내에서 QObject 생성, 신호 방출, 타이머 시작 등을 할 때는 렌더링 스레드에 영향을 미칠 수 있으므로 각별히 주의해야 합니다.
width(), height() 및 textureSize 를참조하세요 .
QQuickPaintedItem::PerformanceHints QQuickPaintedItem::performanceHints() const
성능 힌트를 반환합니다.
기본적으로 성능 힌트는 활성화되지 않습니다.
setPerformanceHint() 및 setPerformanceHints()도 참조하세요 .
[override virtual protected]
void QQuickPaintedItem::releaseResources()
다시 구현합니다: QQuickItem::releaseResources().
void QQuickPaintedItem::setAntialiasing(bool enable)
enable 이 참이면 앤티앨리어싱 페인팅이 활성화됩니다.
기본적으로 앤티앨리어싱은 활성화되어 있지 않습니다.
antialiasing()도 참조하세요 .
void QQuickPaintedItem::setMipmap(bool enable)
enable 이 참이면 연결된 텍스처에서 밉매핑이 활성화됩니다.
밉매핑은 렌더링 속도를 높이고 아이템의 크기를 축소할 때 에일리어싱 아티팩트를 줄입니다.
기본적으로 밉매핑은 활성화되지 않습니다.
mipmap()도 참조하세요 .
void QQuickPaintedItem::setOpaquePainting(bool opaque)
opaque 이 참이면 항목이 불투명하고, 그렇지 않으면 반투명으로 간주됩니다.
불투명 항목은 씬의 나머지 부분과 블렌딩되지 않으므로 렌더링 속도를 높이려면 항목의 콘텐츠가 불투명할 경우 이 값을 true로 설정해야 합니다.
기본적으로 페인트된 항목은 불투명하지 않습니다.
opaquePainting()도 참조하세요 .
void QQuickPaintedItem::setPerformanceHint(QQuickPaintedItem::PerformanceHint hint, bool enabled = true)
enabled 이 참이면 항목에 지정된 성능 hint 을 설정하고, 그렇지 않으면 성능 힌트를 지웁니다.
기본적으로 성능 힌트는 활성화되지 않습니다/.
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 씬 그래프에서 처리되는 페인트 요청을 예약합니다. 항목이 표시되는 경우에만 다시 그려집니다.
paint()도 참조하십시오 .
[override virtual protected]
QSGNode *QQuickPaintedItem::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *data)
재구현합니다: QQuickItem::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *updatePaintNodeData).
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.