QCanvasPainterItem Class
QCanvasPainterItem クラスは、QML シーングラフ内で Qt Canvas Painter API を使用する方法を提供します。詳細...
| ヘッダー: | #include <QCanvasPainterItem> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS CanvasPainter) target_link_libraries(mytarget PRIVATE Qt6::CanvasPainter) |
| 以下より: | Qt 6.11 |
| 継承元: | QQuickRhiItem |
プロパティ
パブリック関数
| QCanvasPainterItem(QQuickItem *parent = nullptr) | |
| virtual | ~QCanvasPainterItem() override |
| QColor | fillColor() const |
| void | setFillColor(QColor color) |
シグナル
| void | debugChanged() |
| void | fillColorChanged() |
保護された関数
| virtual QCanvasPainterItemRenderer * | createItemRenderer() const = 0 |
再実装された保護関数
| virtual QQuickRhiItemRenderer * | createRenderer() override |
| virtual bool | event(QEvent *event) override |
詳細な説明
独自のペイントアイテムを作成するには、まず QCanvasPainterItem のサブクラスを作成し、その唯一の純粋仮想パブリック関数である `createItemRenderer()` を実装することから始めます。この関数は、実際のペイントを実行するオブジェクトを返します。
以下のコードスニペットは、QCanvasPainterItem のサブクラスの典型的な構造を示しています。MyRenderer クラスの例については、QCanvasPainterItemRenderer を参照してください。
class MyItem : public QCanvasPainterItem
{
Q_OBJECT
QML_NAMED_ELEMENT(MyItem) // exposed to QML, instantiate as MyItem { ... }
// a custom property
Q_PROPERTY(float value READ value WRITE setValue NOTIFY valueChanged)
public:
MyItem(QQuickItem *parent = nullptr)
: QCanvasPainterItem(parent)
{
}
QCanvasPainterItemRenderer *createItemRenderer() const override
{
return new MyRenderer;
}
float value() const { return m_value; }
void setValue(float newValue)
{
if (m_value != newValue) {
m_value = newValue;
emit valueChanged();
}
}
signals:
void valueChanged();
private:
float m_value = 0.0f;
};QtQuick::Item::antialiasing プロパティを使用すると、アンチエイリアシングを無効にすることができます。デフォルト値はtrue です。これをfalse に設定すると、描画コードでQCanvasPainter::setAntialias() が0 より大きい値で呼び出された場合でも、アンチエイリアシングが無効になります。アンチエイリアシングを無効にすると、パフォーマンスが向上する可能性があります。
QCanvasPainterItemRendererも参照してください 。
プロパティのドキュメント
[read-only] debug : QVariantMap
レンダリング統計のキー・値の対応表が含まれています。このデータは、環境変数QCPAINTER_DEBUG_COLLECT が0以外の値に設定されている場合にのみ収集されます。
データは、アイテムが再描画されるたびに更新されるわけではなく、定期的に更新されます。現在、その間隔は1秒です。したがって、取得されるデータは多くの場合、そのアイテムの以前の描画状態を反映したものとなります。統計情報をインタラクティブに表示する際には通常問題になりませんが、この点には留意しておくことが重要です。
データをアイテム内にオーバーレイとして自動的に表示するには、代わりに環境変数 `QCPAINTER_DEBUG_RENDER ` を設定してください。これは、いずれにせよ値を画面上に表示する予定がある場合に便利なショートカットとなります。
現在、利用可能なキーの一覧は以下の通りです:
- fillDrawCallCount
- strokeDrawCallCount
- textDrawCallCount
- fillTriangleCount
- strokeTriangleCount
- textTriangleCount
- 描画呼び出し回数
- 三角形数
- imageMemoryUsage
- imageCount
- パスグループ数
- キャッシュされたサブパス数
- キャッシュされたパス頂点データのサイズ
通知シグナル:
| void | debugChanged() |
fillColor : QColor
このプロパティは、アイテムの塗りつぶし(つまり、アイテムの背景)に使用する色を指定します。
デフォルトの色は黒です。
アクセス関数:
| QColor | fillColor() const |
| void | setFillColor(QColor color) |
Notifierシグナル:
| void | fillColorChanged() |
メンバ関数のドキュメント
[explicit] QCanvasPainterItem::QCanvasPainterItem(QQuickItem *parent = nullptr)
指定されたparent アイテムを使用して、QCanvasPainterItemを構築します。
[override virtual noexcept] QCanvasPainterItem::~QCanvasPainterItem()
QCanvasPainterItem を削除します。
[pure virtual protected] QCanvasPainterItemRenderer *QCanvasPainterItem::createItemRenderer() const
このメソッドを実装して、このアイテム用のペインターを(再)作成してください。ペインタークラスはQCanvasPainterItemRenderer を継承する必要があります。QCanvasPainterItem は、作成されたオブジェクトの所有権を取得し、必要に応じてそれを削除します。
サンプルコード:
QCanvasPainterItemRenderer* MyItem::createItemRenderer() const { return new MyItemPainter(); }
[override virtual protected] QQuickRhiItemRenderer *QCanvasPainterItem::createRenderer()
QQuickRhiItem::createRenderer() を再実装します。
[override virtual protected] bool QCanvasPainterItem::event(QEvent *event)
QQuickRhiItem::event(QEvent *e) を再実装します。
QColor QCanvasPainterItem::fillColor() const
現在の塗りつぶし色を返します。
注: プロパティ fillColorのゲッター関数です 。
関連項目: setFillColor()。
void QCanvasPainterItem::setFillColor(QColor color)
塗りつぶし色を「color 」に設定します。この色は、アイテムの背景を描画する際に使用されます。デフォルトの色は黒です。
注: 塗りつぶし色を完全不透明ではない色(アルファチャンネルが 255 未満)に設定する場合は 、alphaBlending もtrue に設定することを忘れないでください。
注: プロパティ `fillColor`のセッター 関数です。
fillColor() およびQQuickRhiItem::alphaBlendingも参照してください 。
© 2026 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.