QQuickPaintedItem Class

QQuickPaintedItem クラスは、QML Scene Graph で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 }

プロパティ

パブリック関数

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

シグナル

再実装された保護された関数

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 Scene Graph でQPainter API を使えるようにします。シーングラフにテクスチャ付きの矩形を設定し、QPainter を使ってテクスチャにペイントします。Qt 6 のレンダーターゲットは常にQImage です。レンダーターゲットがQImage の場合、QPainter が最初に画像にレンダリングされ、その後、コンテンツがテクスチャにアップロードされます。再描画をトリガーするにはupdate() を呼び出します。

QPainter でアンチエイリアスレンダリングを有効にするには、setAntialiasing() を使用します。

独自のペイントアイテムを作成するには、まず QQuickPaintedItem のサブクラスを作成し、唯一の純粋な仮想パブリック関数であるpaint() を実装します。ペイントは、0,0 からwidth(),height() までの矩形内に行われます。

注意: このような項目がパフォーマンスに与える影響を理解することは重要です。QQuickPaintedItem::RenderTargetQQuickPaintedItem::renderTarget を参照してください。

Scene Graph - Painted ItemおよびWriting QML Extensions with C++参照してください。

メンバ型ドキュメント

enum QQuickPaintedItem::PerformanceHint
flags QQuickPaintedItem::PerformanceHints

この enum は、QQuickPaintedItem のレンダリングパフォーマンスを向上させるために有効にできるフラグを記述します。 デフォルトでは、これらのフラグは何も設定されていません。

定数説明
QQuickPaintedItem::FastFBOResizing0x1Qt 6.0 では、この値は無視されます。

PerformanceHints 型はQFlags<PerformanceHint> の typedef です。これは、PerformanceHint 値の OR の組み合わせを格納します。

enum QQuickPaintedItem::RenderTarget

この列挙型はQQuickPaintedItem のレンダーターゲットを記述する。レンダーターゲットは、アイテムがスクリーン上にレンダリングされる前にQPainter がペイントする表面です。

定数説明
QQuickPaintedItem::Image0デフォルト;QPainter は、ラスターペイントエンジンを使用してQImage にペイントします。画像のコンテンツは、その後グラフィックメモリにアップロードされる必要があり、アイテムが大きい場合、この操作は遅くなる可能性があります。このレンダーターゲットは、高品質のアンチエイリアシングと高速なアイテムのリサイズを可能にします。
QQuickPaintedItem::FramebufferObject1Qt 6.0 では、この値は無視されます。
QQuickPaintedItem::InvertedYFramebufferObject2Qt 6.0 では、この値は無視されます。

setRenderTarget()も参照してください

プロパティのドキュメント

fillColor : QColor

このプロパティは、アイテムの背景の塗りつぶし色を保持する。

デフォルトでは、塗りつぶし色はQt::transparent に設定されています。

背景の塗りつぶしを無効にするには、塗りつぶし色を無効な色(例えば QColor())に設定します。これはパフォーマンスを向上させる可能性があり、paint() 関数が各フレームのすべてのピクセルに描画する場合に実行すると安全です。

アクセス関数:

QColor fillColor() const
void setFillColor(const QColor &)

通知シグナル:

void fillColorChanged()

renderTarget : RenderTarget

このプロパティは、アイテムのレンダーターゲットを保持する。

このプロパティは、QPainter がどのレンダーターゲットにレンダリングするかを定義します。QQuickPaintedItem::ImageQQuickPaintedItem::FramebufferObjectQQuickPaintedItem::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 change, const QQuickItem::ItemChangeData &value)。

bool QQuickPaintedItem::mipmap() const

ミップマップが有効な場合はtrueを返し、そうでない場合はfalseを返す。

デフォルトでは、ミップマップは有効になっていません。

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 は2つのスレッドを使い、メインスレッドがイベントの処理やアニメーションの更新などを行い、2番目のスレッドが実際のグラフィックスリソースの更新や描画呼び出しの記録を行います。その結果、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 が true の場合、アンチエイリアス・ペインティングが有効になる。

デフォルトでは、アンチエイリアスは有効になっていません。

antialiasing()も参照

void QQuickPaintedItem::setMipmap(bool enable)

enable が true の場合、関連するテクスチャでミップマッピングが有効になります。

ミップマッピングは、レンダリング速度を向上させ、アイテムが縮小されたときのエイリアシングアーティファクトを低減します。

デフォルトでは、ミップマッピングは有効になっていません。

mipmap()も参照してください

void QQuickPaintedItem::setOpaquePainting(bool opaque)

opaque が true の場合、アイテムは不透明です。そうでない場合、アイテムは半透明とみなされます。

不透明なアイテムは、シーンの他の部分とブレンドされません。レンダリングを高速化するために、アイテムの内容が不透明な場合は、これをtrueに設定する必要があります。

デフォルトでは、ペイントされたアイテムは不透明ではありません。

opaquePainting()も参照してください

void QQuickPaintedItem::setPerformanceHint(QQuickPaintedItem::PerformanceHint hint, bool enabled = true)

enabled が true の場合、指定されたパフォーマンス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 Scene Graph によって処理される描画要求をスケジュールします。アイテムが再描画されるのは、それが表示されている場合のみです。

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.