QQuickPaintedItem Class

QQuickPaintedItem クラスは、QML Scene Graph でQPainter API を使用する方法を提供します。詳細...

Header: #include <QQuickPaintedItem>
CMake: find_package(Qt6 REQUIRED COMPONENTS Quick)
target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmake: QT += quick
Inherits: 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 &)

Notifier シグナル:

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)。

©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。