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 } |
プロパティ
- 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 Scene Graph でQPainter API を使えるようにします。シーングラフにテクスチャ付きの矩形を設定し、QPainter を使ってテクスチャにペイントします。Qt 6 のレンダーターゲットは常にQImage です。レンダーターゲットがQImage の場合、QPainter が最初に画像にレンダリングされ、その後、コンテンツがテクスチャにアップロードされます。再描画をトリガーするにはupdate() を呼び出します。
QPainter でアンチエイリアスレンダリングを有効にするには、setAntialiasing() を使用します。
独自のペイントアイテムを作成するには、まず QQuickPaintedItem のサブクラスを作成し、唯一の純粋な仮想パブリック関数であるpaint() を実装します。ペイントは、0,0 からwidth(),height() までの矩形内に行われます。
注意: このような項目がパフォーマンスに与える影響を理解することは重要です。QQuickPaintedItem::RenderTarget とQQuickPaintedItem::renderTarget を参照してください。
Scene Graph - Painted ItemおよびWriting QML Extensions with C++も 参照してください。
メンバ型ドキュメント
enum QQuickPaintedItem::PerformanceHint
flags QQuickPaintedItem::PerformanceHints
この enum は、QQuickPaintedItem のレンダリングパフォーマンスを向上させるために有効にできるフラグを記述します。 デフォルトでは、これらのフラグは何も設定されていません。
定数 | 値 | 説明 |
---|---|---|
QQuickPaintedItem::FastFBOResizing | 0x1 | Qt 6.0 では、この値は無視されます。 |
PerformanceHints 型はQFlags<PerformanceHint> の typedef です。これは、PerformanceHint 値の OR の組み合わせを格納します。
enum QQuickPaintedItem::RenderTarget
この列挙型はQQuickPaintedItem のレンダーターゲットを記述する。レンダーターゲットは、アイテムがスクリーン上にレンダリングされる前にQPainter がペイントする表面です。
定数 | 値 | 説明 |
---|---|---|
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 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.