Item QML Type

基本的な視覚的QML型。詳細...

プロパティ

メソッド

詳細説明

Item型はQt Quickのすべてのビジュアルアイテムの基本型です。

Qt Quickのすべてのビジュアル・アイテムはItemを継承しています。Itemオブジェクトは視覚的な外観を持ちませんが、xとyの位置、幅と高さ、アンカー、キー操作のサポートなど、ビジュアルアイテムに共通するすべての属性を定義します。

Itemタイプは、1つのルートビジュアルアイテムの下に複数のアイテムをグループ化するのに便利です。例えば

import QtQuick 2.0

Item {
    Image {
        source: "tile.png"
    }
    Image {
        x: 80
        width: 100
        height: 100
        source: "tile.png"
    }
    Image {
        x: 190
        width: 100
        height: 100
        fillMode: Image.Tile
        source: "tile.png"
    }
}

イベント処理

すべてのアイテムベースのビジュアルタイプは入力ハンドラQInputEvent のサブクラス)を使用して、マウス、タッチ、キーイベントなどの入力イベントを処理できます。これはイベントを処理するための好ましい宣言的な方法です。

タッチイベントを処理する別の方法は、QQuickItem をサブクラス化し、コンストラクタで setAcceptTouchEvents() を呼び出し、touchEvent() をオーバーライドすることです。Accept イベント全体を使用して、下にあるアイテムへの配信を停止し、イベントのすべてのタッチポイントを排他的にグラブします。QPointerEvent::setExclusiveGrabber() を使用すると、特定のタッチポイントのみを取得し、イベントをさらに配信することができます。

同様に、QQuickItem サブクラスは、setAcceptedMouseButtons() を呼び出してマウス・ボタン・イベントを受け取るように登録し、setAcceptHoverEvents() を呼び出してホバー・イベント(ボタンが押されていない間のマウスの動き)を受け取り、仮想関数 mousePressEvent()、mouseMoveEvent()、mouseReleaseEvent() をオーバーライドすることができます。grab それらはまた、それ以上の配信を防ぐためにイベントを受け入れ、同時に暗黙のグラブを取得することができます;または明示的にQMouseEvent が運ぶ単一のQEventPoint

キーハンドリングは、Keys のアタッチドプロパティを通じて、すべてのアイテムベースのビジュアルタイプで利用可能です。Keysattached プロパティはpressedreleased のような基本的なシグナルのほか、spacePressed のような特定のキーに対するシグナルも提供します。以下の例では、アイテムにキーボードフォーカスを割り当て、一般的なonPressed ハンドラで左キーを、onReturnPressed ハンドラでリターンキーを処理しています:

import QtQuick 2.0

Item {
    focus: true
    Keys.onPressed: (event)=> {
        if (event.key == Qt.Key_Left) {
            console.log("move left");
            event.accepted = true;
        }
    }
    Keys.onReturnPressed: console.log("Pressed return");
}

詳細なドキュメントはKeys 添付プロパティを参照してください。

レイアウトのミラーリング

アイテムのレイアウトは、LayoutMirroring attachedプロパティを使用してミラーリングすることができます。これにより、anchors は水平方向に反転され、子アイテム(ListViewRow など)をレイアウトしたり配置したりするアイテムも水平方向に反転されます。

詳しくはLayoutMirroring を参照してください。

アイテムのレイヤー

アイテムは通常、それが属するウィンドウに直接レンダリングされます。しかし、layer.enabled を設定することで、アイテムとそのサブツリー全体をオフスクリーン・サーフェスに委譲することができます。オフスクリーンサーフェス(テクスチャ)のみがウィンドウに描画されます。

アイテムのテクスチャサイズと異なるテクスチャサイズが必要な場合は、layer.textureSize を使用することで可能です。アイテムの一部分だけをテクスチャに描画するには、layer.sourceRect を使います。また、layer.sourceRect を指定して、アイテムの境界を超えるようにすることも可能です。この場合、外側は透明ピクセルでパディングされます。

layer.smoothtrue に設定されている場合、アイテムはスケーリングに線形補間を使用し、layer.mipmaptrue に設定されている場合、ダウンサンプリングにミップマップを使用します。ミップマッピングは、ダウンスケールされたアイテムの視覚的な品質を向上させる可能性があります。単一の画像アイテムのミップマッピングには、Image::mipmap を使用してください。

レイヤーの不透明度とアイテムの不透明度

アイテム階層にopacity を適用する場合、不透明度は各アイテムに個別に適用されます。これは、不透明度がサブツリーに適用されたとき、望ましくない視覚的な結果につながる可能性があります。次の例を見てください:

非レイヤーの不透明度
Item {
    id: nonLayered

    opacity: 0.5

    width: 100
    height: 100

    Rectangle { width: 80; height: 80; border.width: 1 }
    Rectangle { x: 20; y: 20; width: 80; height: 80; border.width: 1 }
}

レイヤーはルートアイテムの不透明度が 1 でレンダリングされ、描画時にルートアイテムの不透明度がテクスチャに適用されます。つまり、大きなアイテム階層で透明から不透明に、またはその逆にフェードインすることができ、通常のアイテムごとのアルファブレンディングのようなオーバーラップアーティファクトが発生しません。以下は、レイヤーを有効にした同じ例です:

レイヤーの不透明度
Item {
    id: layered

    opacity: 0.5

    layer.enabled: true

    width: 100
    height: 100

    Rectangle { width: 80; height: 80; border.width: 1 }
    Rectangle { x: 20; y: 20; width: 80; height: 80; border.width: 1 }
}

ShaderEffectsとの組み合わせ

layer.enabled を true に設定すると、アイテムはtexture provider になり、例えばShaderEffect タイプと組み合わせて、アイテムをテクスチャとして直接使用することが可能になります。

実行時にレイヤーにエフェクトを適用するには、layer.effect を使用します:

Item {
    id: layerRoot
    layer.enabled: true
    layer.effect: ShaderEffect {
        fragmentShader: "effect.frag.qsb"
    }
}

エフェクトの使い方については、ShaderEffect を参照してください。

注: layer.enabled は、実際にはShaderEffectSource をより便利に使う方法です。

メモリとパフォーマンス

アイテムのレイヤーが有効化されると、シーングラフはwidth x height x 4 に等しいメモリを GPU に割り当てます。 メモリに制約のあるコンフィギュレーションでは、大きなレイヤーは注意して使用する必要があります。

QPainter /QWidget の世界では、pixmap、画像、テクスチャに複雑なコンテンツをキャッシュするのが有利な場合があります。Qt Quick では、シーン・グラフ・レンダラーによってすでに適用されているテクニックのため、ほとんどの場合、このようなことはありません。バッチ処理のため、過剰な描画呼び出しはすでに削減されており、ほとんどの場合、キャッシュは元のコンテンツよりも多くのピクセルをブレンドすることになります。したがって、オフスクリーンへのレンダリングのオーバーヘッドと、結果のテクスチャの描画に伴うブレンドは、単にアイテムとその子を普通に描画させるよりもコストがかかることがよくあります。

また、レイヤーを使用するアイテムは、レンダリング中にバッチ処理できません。つまり、レイヤー化されたアイテムが多いシーンでは、パフォーマンスに問題が生じる可能性があります。

レイヤーは便利で視覚効果に役立ちますが、ほとんどの場合、効果の間だけ有効にし、その後は無効にする必要があります。

プロパティの説明

children : list<Item>

resources : list<QtObject>

children プロパティには、このアイテムのビジュアルチルドレンのリストが含まれます。resources プロパティには、名前で参照したい非ビジュアルリソースが含まれます。

通常、子アイテムやリソースを追加する際にこれらのプロパティを参照する必要はありません。デフォルトのdata プロパティは、子オブジェクトを自動的にchildren およびresources プロパティに適切に割り当てるからです。詳しくはdata のドキュメントを参照してください。


height : real

width : real

x : real

y : real

アイテムの位置とサイズを定義します。デフォルト値は0 です。

(x,y)の位置は、parent からの相対位置です。

Item { x: 100; y: 100; width: 100; height: 100 }

implicitHeight : real

implicitWidth : real

アイテムの好ましい幅または高さを定義する。

width またはheight が指定されていない場合、アイテムの有効サイズはimplicitWidth またはimplicitHeight によって決定されます。

ただし、アイテムがレイアウトの子である場合、レイアウトはその暗黙のサイズを使用してアイテムの優先サイズを決定します。こ の よ う な場合、 明示的なwidth またはheight は無視 さ れます。

ほとんどのアイテムのデフォルトの暗黙的サイズは0x0ですが、ImageText のように、オーバーライドできない暗黙的サイズを持つアイテムもあります。

暗黙的なサ イ ズ を設定す る こ と は、 内容に よ っ て優先 さ れ る サ イ ズ を持つ コ ン ポーネ ン ト を定義す る 場合な ど に有用です:

// Label.qml
import QtQuick 2.0

Item {
    property alias icon: image.source
    property alias label: text.text
    implicitWidth: text.implicitWidth + image.implicitWidth
    implicitHeight: Math.max(text.implicitHeight, image.implicitHeight)
    Image { id: image }
    Text {
        id: text
        wrapMode: Text.Wrap
        anchors.left: image.right; anchors.right: parent.right
        anchors.verticalCenter: parent.verticalCenter
    }
}

注: Text またはTextEditimplicitWidth を使い、幅を明示的に設定すると、テキストを2回レイアウトする必要があるため、パフォーマンス上のペナルティが発生します。


activeFocus : bool [read-only]

この読み取り専用プロパティは、アイテムにアクティブフォーカスがあるかどうかを示します。

activeFocusがtrueの場合、このアイテムが現在キーボード入力を受けているか、または現在キーボード入力を受けているアイテムのFocusScope 先祖である。

通常、activeFocus は項目とそれを囲むFocusScope オブジェクトにfocus を設定することで得られる。次の例では、inputfocusScope オブジェクトはアクティブフォーカスを持ちますが、ルート矩形オブジェクトは持ちません。

import QtQuick 2.0

Rectangle {
    width: 100; height: 100

    FocusScope {
        id: focusScope
        focus: true

        TextInput {
            id: input
            focus: true
        }
    }
}

Qt Quick のfocusキーボード・フォーカスも参照してください


activeFocusOnTab : bool

このプロパティは、アイテムがタブ・フォーカス・チェーンに入るかどうかを保持します。デフォルトでは、false に設定されています。

タブフォーカスの連鎖は、まず親を訪れ、次にその子を children プロパティで指定された順番に訪れます。タブ・フォーカスの連鎖のある項目でタブキーを押すと、キーボード・フォーカスが連鎖の次の項目に移動します。BackTab(通常はShift+Tab)を押すと、前の項目にフォーカスが移動します。

手動タブ・フォーカス・チェインを設定するには、KeyNavigation を参照してください。KeysまたはKeyNavigation で使用されるTabキーイベントは、フォーカス・チェインの動作よりも優先されます。他のキー・ハンドラのイベントを無視して、フォーカス・チェインが伝播するようにしてください。


anchors group

anchors.alignWhenCentered : bool

anchors.baseline : AnchorLine

anchors.baselineOffset : real

anchors.bottom : AnchorLine

anchors.bottomMargin : real

anchors.centerIn : Item

anchors.fill : Item

anchors.horizontalCenter : AnchorLine

anchors.horizontalCenterOffset : real

anchors.left : AnchorLine

anchors.leftMargin : real

anchors.margins : real

anchors.right : AnchorLine

anchors.rightMargin : real

anchors.top : AnchorLine

anchors.topMargin : real

anchors.verticalCenter : AnchorLine

anchors.verticalCenterOffset : real

アンカーは、他のアイテムとの関係を指定してアイテムを配置する方法を提供します。

マージンはtop、bottom、left、right、fillアンカーに適用されます。anchors.margins プロパティを使用すると、さまざまなマージンをすべて一度に同じ値に設定できます。これは、以前に設定された特定のマージンを上書きすることはありません。明示的なマージンをクリアするには、その値をundefined に設定します。マージンはアンカー固有であり、アイテムがアンカーを使用しない場合は適用されないことに注意してください。

オフセットは水平方向中央、垂直方向中央、ベースラインアンカーに適用されます。

テキス ト を画像に、 水平方向中央に、 垂直方向下に、 マージン付きでアンカー。
Item {
    Image {
        id: pic
        // ...
    }
    Text {
        id: label
        anchors.horizontalCenter: pic.horizontalCenter
        anchors.top: pic.bottom
        anchors.topMargin: 5
        // ...
    }
}

テキストの左側は、画像の右側にマージン付きで固定されます。両方のyプロパティのデフォルトは0です。
Item {
    Image {
        id: pic
        // ...
    }
    Text {
        id: label
        anchors.left: pic.right
        anchors.leftMargin: 5
        // ...
    }
}

anchors.fill は、あるアイテムが別のアイテムと同じジオメトリを持つための便利な方法を提供し、4つの方向アンカーをすべて接続することと同じです。

アンカー値をクリアするには、undefined に設定します。

anchors.alignWhenCentered (デフォルト ) に設定すると、中央揃えアンカーは全ピクセルに整列します。中央揃えされるアイテムが奇数 または を持つ場合、アイテムは半ピクセルに配置されるのではなく、全ピクセルに配置されます。これにより、アイテムは鮮明に描かれます。これが好ましくない場合もあります。たとえば、アイテムを回転させると、中心が丸くなるため、ジッターが発生する可能性があります。true width height

注意: アイテムをアンカーで固定できるのは、兄弟か親だけです。

詳しくはアンカーレイアウトを参照してください。


antialiasing : bool

ビジュアル要素で、アイテムがアンチエイリアスを使用するかどうかを決定するために使用されます。場合によっては、アンチエイリアシングを使用するアイテムは、より多くのメモリを必要とし、レンダリングが遅くなる可能性があります(詳細はアンチエイリアシングを参照してください)。

デフォルトは false ですが、派生要素によってオーバーライドされる場合があります。


baselineOffset : int

アイテムのベースラインの位置をローカル座標で指定します。

Text アイテムのベースラインは、テキストが置かれる仮想線です。テキストを含むコントロールは通常、そのベースラインをテキストのベースラインに設定します。

非テキストアイテムの場合、デフォルトのベースラインオフセット0が使用される。


childrenRect group

childrenRect.height : real [read-only]

childrenRect.width : real [read-only]

childrenRect.x : real [read-only]

childrenRect.y : real [read-only]

この読み取り専用プロパティは、アイテムの子の集合的な位置とサイズを保持する。

このプロパティは、アイテムのサイズを正しく設定するために、アイテムの子の集合的なジオメトリにアクセスする必要がある場合に便利です。

返されるジオメトリは、アイテムにローカルです。例えば

Item {
    x: 50
    y: 100

    // prints: QRectF(-10, -20, 30, 40)
    Component.onCompleted: print(childrenRect)

    Item {
        x: -10
        y: -20
        width: 30
        height: 40
    }
}

clip : bool

このプロパティは、クリッピングが有効かどうかを保持します。デフォルトのクリップ値はfalse です。

クリッピングが有効な場合、アイテムはそれ自身のペイントとその子のペイントをその境界矩形にクリッピングします。

注意: クリッピングはレンダリングのパフォーマンスに影響することがあります。詳細はクリッピングを参照してください。


containmentMask : QObject*

このプロパティは、contains() メソッドで使用される、Item のオプションのマスクを保持します。現在の主な用途は、pointer event がアイテムに着地したかどうかを判定することです。

デフォルトでは、contains() メソッドは、Item のバウンディングボックス内のどの点に対しても真を返します。containmentMask は、より細かい制御を可能にします。たとえば、専用のcontains() メソッドを持つカスタム C++QQuickItem サブクラスが、containmentMask として使用されている場合:

Item { id: item; containmentMask: AnotherItem { id: anotherItem } }

itemのcontainsメソッドは、otherItemの contains ()実装がtrue を返す場合にのみ、true を返します。

Shape をマスクとして使用することで、アイテムが矩形以外の領域でのみpointer events に反応するようにすることができます:

Rectangle {
    width: 90; height: 100
    color: hoverHandler.hovered ? "wheat" : "lightgray"
    containmentMask: shape

    HoverHandler { id: hoverHandler }

    Shape {
        id: shape
        containsMode: Shape.FillContains

        ShapePath {
            fillColor: "lightsteelblue"
            startX: 10; startY: 20
            PathArc {
                x: 10; y: 80
                radiusX: 40; radiusY: 40
                useLargeArc: true
            }
            PathLine {
                x: 10; y: 20
            }
        }
    }
}

QMLではcontainsメソッドを定義することも可能です。例えば、円形のアイテムを作成し、そのアイテムの実際の範囲内のイベントにのみ反応させることができます:

Rectangle {
    id: circle
    width: 100; height: width
    radius: width / 2
    color: tapHandler.pressed ? "tomato" : hoverHandler.hovered ? "darkgray" : "lightgray"

    TapHandler { id: tapHandler }
    HoverHandler { id: hoverHandler }

    containmentMask: QtObject {
        property alias radius: circle.radius
        function contains(point: point) : bool {
            return (Math.pow(point.x - radius, 2) + Math.pow(point.y - radius, 2)) < Math.pow(radius, 2)
        }
    }
}

Qt Quick Examples - Shapesも参照して ください。


data : list<QtObject> [default]

data プロパティを使用すると、ビジュアルチャイルドとリソースを自由に混在させることができます。ビジュアルアイテムをデータリストに割り当てるとチャイルドになり、他のオブジェクトタイプを割り当てるとリソースとして追加されます。

ですから、次のように書くことができます:

Item {
    Text {}
    Rectangle {}
    Timer {}
}

と書くことができます:

Item {
    children: [
        Text {},
        Rectangle {}
    ]
    resources: [
        Timer {}
    ]
}

data プロパティは、Item のデフォルト・プロパティであるため、すべての子アイテムは自動的にこのプロパティに割り当てられるので、一般的には参照する必要はないはずです。


enabled : bool

このプロパティは、アイテムがマウスイベントとキーボードイベントを受信するかどうかを保持します。デフォルトではtrueである。

このプロパティを設定すると、子アイテムのenabled の値に直接影響します。false に設定すると、すべての子アイテムのenabled の値もfalse になります。true に設定すると、明示的にfalse に設定されていない限り、子アイテムのenabled の値はtrue に戻されます。

このプロパティをfalse に設定すると、自動的にactiveFocusfalse に設定され、このアイテムはキーボード・イベントを受け取らなくなります。

visibleも参照のこと


focus : bool

このプロパティは、このアイテムがFocusScope を囲む中でフォーカスを持つかどうかを保持する。真ならば、FocusScope がアクティブ・フォーカスを得たとき、このアイテムはアクティブ・フォーカスを得る。

次の例では、scope がアクティブ・フォーカスを得たとき、input がアクティブ・フォーカスを得る:

import QtQuick 2.0

Rectangle {
    width: 100; height: 100

    FocusScope {
        id: scope

        TextInput {
            id: input
            focus: true
        }
    }
}

このプロパティでは、シーン全体がフォーカススコープのように動作すると仮定しています。現実的なレベルでは、以下のQMLは起動時にinput にアクティブフォーカスを与えることを意味します。

Rectangle {
    width: 100; height: 100

    TextInput {
          id: input
          focus: true
    }
}

Qt Quick のactiveFocusキーボードフォーカスも参照してください


focusPolicy : enumeration [since 6.7]

このプロパティは、アイテムがフォーカスを受け入れる方法を決定します。

定数説明
Qt.TabFocus項目はタブ操作によってフォーカスを受け取ります。
Qt.ClickFocus項目は、クリックによってフォーカスを受け取ります。
Qt.StrongFocusタブとクリックの両方でフォーカスを受け付ける。
Qt.WheelFocusタブ、クリック、マウスホイールでフォーカスを受け付ける。
Qt.NoFocus項目はフォーカスを受け付けない。

注: このプロパティは、Qt 6.6 以前ではControl QML タイプのメンバでした。

このプロパティは Qt 6.7 で導入されました。


layer.effect : Component

このレイヤーに適用されるエフェクトを保持します。

エフェクトは通常、ShaderEffect コンポーネントですが、Item コンポーネントを割り当てることもできます。このエフェクトは、layer.samplerName に一致する名前の source texture プロパティを持つ必要があります。

layer.samplerName およびItem Layersも参照してください


layer.enabled : bool

アイテムがレイヤー化されているかどうかを保持します。デフォルトでは、レイヤーは無効です。

レイヤー化されたアイテムはオフスクリーンのサーフェスにレンダリングされ、変更されるまでキャッシュされます。複雑な QML アイテム階層では、レイヤーを有効にすることで最適化できる場合があります。

レイヤーが無効になっている場合、他のレイヤープロパティは何も影響しません。

Item Layersも参照してください


layer.format : enumeration

このプロパティはバッキングテクスチャのフォーマットを定義します。このプロパティを変更するのは、layer.effect も指定されている場合に最も意味があります。

定数説明
ShaderEffectSource.RGBA8
ShaderEffectSource.RGBA16F
ShaderEffectSource.RGBA32F
ShaderEffectSource.AlphaQt 6.0 以降、この値は使用されておらず、実際にはRGBA8 と同じ効果を持ちます。
ShaderEffectSource.RGBQt 6.0 以降、この値は使用されておらず、実際にはRGBA8 と同じ効果があります。
ShaderEffectSource.RGBAQt 6.0 以降、この値は使用されておらず、実際にはRGBA8 と同じ効果があります。

Item Layersも参照してください


layer.live : bool [since 6.5]

このプロパティが true の場合、アイテムが更新されるたびにレイヤーのテクスチャが更新されます。そうでない場合は、常にフリーズした画像になります。

デフォルトでは、このプロパティはtrue に設定されています。

このプロパティは Qt 6.5 で導入されました。

Item Layersも参照してください


layer.mipmap : bool

このプロパティが true の場合、テクスチャに対してミップマップが生成されます。

注意: OpenGL ES 2 の実装の中には、非2乗テクスチャのミップマップをサポートしていないものがあります。

Item Layersも参照してください


layer.samplerName : string

エフェクトのソーステクスチャプロパティの名前を保持します。

この値は、Item がレイヤーのオフスクリーンサーフェスをエフェクトに正しく渡すことができるように、エフェクトのソーステクスチャプロパティの名前と一致する必要があります。

layer.effectShaderEffectItem Layersも参照してください


layer.samples : enumeration

このプロパティは、レイヤーのマルチサンプルレンダリングを要求することができます。

デフォルトでは、マルチサンプリングは、使用中のシーングラフレンダラと基礎となるグラフィックスAPIがこれをサポートしていると仮定して、ウィンドウ全体でマルチサンプリングが有効になっているときはいつでも有効になります。

値を 2、4 などに設定することで、シーン全体のマルチサンプリングを有効にすることなく、シーンの一部にマルチサンプルレンダリングを要求することができます。こうすることで、マルチサンプリングは指定されたサブツリーにのみ適用され、シーンの他の部分にはマルチサンプリングが適用されないため、パフォーマンスが大幅に向上します。

注意: マルチサンプリングを有効にすると、ハードウェアとドライバに依存したパフォーマンスとメモリコストが発生するため、レイヤーのサイズに関係なく、コストが高くなる可能性があります。

注意: このプロパティは、マルチサンプルレンダバッファとフレームバッファブリットのサポートが利用可能な場合にのみ機能します。そうでない場合、値は無視されます。


layer.smooth : bool

レイヤーを滑らかに変換するかどうかを保持します。有効にすると、レイヤーのテクスチャのサンプリングはlinear 補間を使用して実行され、非スムーズではnearest フィルタリングモードが使用されます。

デフ ォル ト では、 こ のプ ロ パテ ィ はfalse に設定 さ れてい ます。

Item Layersも参照してください


layer.sourceRect : rect

このプロパティは、テクスチャにレンダリングされるアイテムの矩形領域を定義します。ソース矩形は、アイテム自体よりも大きくすることができます。矩形がデフォルトである NULL の場合、アイテム全体がテクスチャにレンダリングされます。

Item Layersも参照してください


layer.textureMirroring : enumeration

このプロパティは、生成されたテクスチャをどのようにミラーリングするかを定義します。デフォルト値はShaderEffectSource.MirrorVertically です。カスタムミラーリングは、生成されたテクスチャがShaderEffect で指定されているようなカスタムシェーダによって直接アクセスされる場合に便利です。レイヤー アイテムにエフェクトが指定されていない場合、ミラーリングはアイテムの UI 表現には影響しません。

定数説明
ShaderEffectSource.NoMirroringミラーリングなし
ShaderEffectSource.MirrorHorizontally生成されたテクスチャは X 軸に沿って反転されます。
ShaderEffectSource.MirrorVertically生成されたテクスチャは Y 軸に沿って反転されます。

layer.textureSize : size

このプロパティは、レイヤーテクスチャの要求ピクセルサイズを保持します。デフォルトである空の場合、アイテムのサイズが使用されます。

注意: プラットフォームによっては、フレームバッファオブジェクトのサイズに制限があり、実際のテクスチャサイズが要求されたサイズよりも大きくなる場合があります。

Item Layersも参照してください


layer.wrapMode : enumeration

このプロパティは、テクスチャに関連するラップモードを定義します。このプロパティを変更するのは、layer.effect が指定されているときに最も意味があります。

定数説明
ShaderEffectSource.ClampToEdgeGL_CLAMP_TO_EDGE 水平方向と垂直方向の両方
ShaderEffectSource.RepeatHorizontally水平方向に GL_REPEAT、垂直方向に GL_CLAMP_TO_EDGE
ShaderEffectSource.RepeatVerticallyGL_CLAMP_TO_EDGE 水平方向、GL_REPEAT 垂直方向
ShaderEffectSource.RepeatGL_REPEAT 水平方向と垂直方向の両方

注意: いくつかの OpenGL ES 2 実装は、非2乗テクスチャでの GL_REPEAT ラップモードをサポートしていません。

Item Layersも参照してください


opacity : real

このプロパティはアイテムの不透明度を保持する。不透明度は 0.0(完全に透明)から 1.0(完全に不透明)の間の数値で指定します。デフォルト値は 1.0 である。

このプロパティが設定されている場合、指定された不透明度は子アイテムにも個別に適用されます。これは、状況によっては意図しない効果をもたらすことがあります。例えば、下の 2 番目の長方形のセットでは、赤の長方形は 0.5 の不透明度を指定しており、これは、子が不透明度を指定していないにもかかわらず、その青の子の長方形の不透明度に影響します。

Item {
    Rectangle {
        color: "red"
        width: 100; height: 100
        Rectangle {
            color: "blue"
            x: 50; y: 50; width: 100; height: 100
        }
    }
}

Item {
    Rectangle {
        opacity: 0.5
        color: "red"
        width: 100; height: 100
        Rectangle {
            color: "blue"
            x: 50; y: 50; width: 100; height: 100
        }
    }
}

アイテムの不透明度を変更しても、そのアイテムがユーザー入力イベントを受け取るかどうかには影響しません。(対照的に、visible プロパティをfalse に設定するとマウスイベントが停止し、enabled プロパティをfalse に設定するとマウスイベントとキーボードイベントが停止し、さらにアイテムからアクティブフォーカスが取り除かれる)。

visibleも参照のこと


palette : Palette [since 6.0]

このプロパティは、アイテムに現在設定されているパレットを保持する。

このプロパティは、アイテムの要求パレットを記述する。パレットは、すべてのコントロールをレンダリングするときにアイテムのスタイルによって使用され、カスタムコントロールがネイティブプラットフォームのネイティブルックアンドフィールとの一貫性を維持できるようにする手段として利用できます。プラットフォームやスタイルが異なると、アプリケーションのパレットも異なることがよくあります。

デフォルトのパレットはシステム環境に依存します。ApplicationWindow は、すべてのコントロールのデフォルトとして機能するシステム/テーマパレットを維持します。また、特定の種類のコントロールのための特別なパレット・デフォルトがあるかもしれません。コントロールのデフォルト・パレットを設定するには、次のいずれかを行う:

アイテムは明示的なパレットプロパティを親から子へ伝搬します。アイテムのパレットの特定のプロパティを変更すると、そのプロパティは、そのプロパティのシステムデフォルトを上書きして、アイテムのすべての子に伝搬します。

Item {
    palette {
        buttonText: "maroon"
        button: "lavender"
    }

    Button {
        text: "Click Me"
    }
}

このプロパティは Qt 6.0 で導入されました。

Window::palette,Popup::palette,ColorGroup,Palette,SystemPaletteも参照してください


parent : Item

このプロパティは、アイテムの視覚的な親を保持します。

注: ビジュアルペアレントの概念は、QObject ペアレントとは異なります。アイテムのビジュアルペアレントは、必ずしもオブジェクトペアレントと同じとは限りません。詳細は、「概念 - Qt Quick の視覚的な親」を参照してください。


rotation : real

このプロパティは、アイテムの回転を、transformOrigin を中心に時計回りの度数で保持します。

デフォルト値は 0 度です(つまり、回転しません)。

Rectangle {
    color: "blue"
    width: 100; height: 100
    Rectangle {
        color: "red"
        x: 25; y: 25; width: 50; height: 50
        rotation: 30
    }
}

Transform およびRotationも参照してください


scale : real

このプロパティは、このアイテムのスケールファクターを保持する。

スケールが 1.0 より小さい場合、アイテムは小さいサイズでレンダリングされ、1.0 より大きい場合、アイテムは大きいサイズでレンダリングされる。負のスケールを指定すると、アイテムはレンダリング時にミラーリングされます。

デフォルト値は 1.0 です。

スケーリングはtransformOrigin から適用されます。

import QtQuick 2.0

Rectangle {
    color: "blue"
    width: 100; height: 100

    Rectangle {
        color: "green"
        width: 25; height: 25
    }

    Rectangle {
        color: "red"
        x: 25; y: 25; width: 50; height: 50
        scale: 1.4
        transformOrigin: Item.TopLeft
    }
}

Transform およびScaleも参照して ください。


smooth : bool

主に画像ベースのアイテムで使用され、アイテムがスムーズ サンプリングを使用するかどうかを決定します。スムースサンプリングは線形補間を使用して実行され、非スムースサンプリングは最近傍を使用して実行されます。

Qt Quick 2.0 では、このプロパティがパフォーマンスに与える影響は最小限です。

デフォルトでは、このプロパティはtrue に設定されています。


state : string

このプロパティは、アイテムの現在の状態の名前を保持します。

アイテムがデフォルトの状態、つまり明示的な状態が設定されていない場合、このプロパティは空の文字列を保持します。同様に、このプロパティに空の文字列を設定することで、アイテムをデフォルトの状態に戻すことができます。

Qt Quick Statesも参照してください


states : list<State>

このプロパティは、このアイテムの可能な状態のリストを保持します。この項目の状態を変更するには、state プロパティをこれらの状態のいずれかに設定するか、state プロパティを空の文字列に設定することで、項目をデフォルトの状態に戻すことができます。

このプロパティは、State オブジェクトのリストとして指定される。例えば、以下は、"red_color" と "blue_color" の状態を持つアイテムです:

import QtQuick 2.0

Rectangle {
    id: root
    width: 100; height: 100

    states: [
        State {
            name: "red_color"
            PropertyChanges { root.color: "red" }
        },
        State {
            name: "blue_color"
            PropertyChanges { root.color: "blue" }
        }
    ]
}

ステートとトランジションの詳細については、「Qt Quick のステートと アニメーションとトランジション」を参照してください。

transitionsも参照のこと


transform : list<Transform> [read-only]

このプロパティは、適用するトランスフォームのリストを保持します。

詳細はTransform を参照。


transformOrigin : enumeration

このプロパティは、スケールと回転を変換する原点を保持します。

下図に示すように、9 つの変換原点が利用可能です。デフ ォル ト の変換原点はItem.Center です。

こ の例は、 画像をその右下隅を中心に回転 さ せます。

Image {
    source: "myimage.png"
    transformOrigin: Item.BottomRight
    rotation: 45
}

任意の変換原点を設定す る には、ScaleRotation の変換 タ イ プをtransform と と も に使います。


transitions : list<Transition>

このプロパティは、このアイテムのトランジションのリストを保持します。これらは、アイテムがstate を変更するたびに適用されるトランジションを定義する。

このプロパティはTransition オブジェクトのリストとして指定される。例えば

import QtQuick 2.0

Item {
    transitions: [
        Transition {
            //...
        },
        Transition {
            //...
        }
    ]
}

ステートとトランジションの詳細については、「Qt Quick のステートと アニメーションとトランジション」を参照してください。

statesも参照してください


visible : bool

このプロパティは、アイテムが表示されているかどうかを保持します。デフォルトでは true です。

このプロパティを設定すると、子アイテムのvisible 値に直接影響します。false に設定すると、すべての子アイテムのvisible 値もfalse になります。true に設定すると、明示的にfalse に設定されていない限り、子アイテムのvisible の値はtrue に戻されます。

(こ の よ う な フ ロ ーオ ン動作があ る ため、 プ ロ パテ ィ バ イ ンデ ィ ン グが明示的なプ ロ パテ ィ 変更にのみ反応す る べ き 場合には、visible プ ロ パテ ィ を使用す る と 意図 し た効果が得 ら れない こ と があ り ます。こ の よ う な場合には、 かわ り にopacity プロパテ ィ を使用す る 方が よ いで し ょ う ) 。

このプロパティがfalse に設定されると、アイテムはマウスイベントを受け取らなくなりますが、キーイベントは受け取り続け、キーボードfocus が設定されている場合はそれを保持します。(対照的に、enabled プロパティをfalse に設定すると、マウスとキーボードの両方のイベントが停止し、アイテムのフォーカスも解除される)。

注: このプロパティの値は、このプロパティまたは親のvisible プロパティへの変更によってのみ影響を受けます。例えば、このアイテムが画面外に移動した場合や、opacity が 0 に変更された場合は変更されません。

opacity およびenabledも参照してください


visibleChildren : list<Item>

この読み取り専用プロパティは、現在表示されているアイテムのすべての子を一覧表示します。子アイテムの可視性は、明示的に変更された場合もあれば、このアイテム(の親アイテム)または別の祖父母の可視性が変更されたために変更された場合もあることに注意してください。


z : real

兄弟アイテムの積み重ね順序を設定します。デフォルトでは、積み重ね順序は 0 です。

積み重ね順が高いアイテムは、積み重ね順が低い兄弟の上に描画されます。同じスタッキング値を持つアイテムは、表示される順番が下から上に描画されます。負のスタッキング値を持つアイテムは、親のコンテンツの下に描画されます。

次の例は、積み重ね順序のさまざまな効果を示しています。

同じz - より後の子がより前の子の上に:
Item {
    Rectangle {
        color: "red"
        width: 100; height: 100
    }
    Rectangle {
        color: "blue"
        x: 50; y: 50; width: 100; height: 100
    }
}

より高いz が上:
Item {
    Rectangle {
        z: 1
        color: "red"
        width: 100; height: 100
    }
    Rectangle {
        color: "blue"
        x: 50; y: 50; width: 100; height: 100
    }
}

同じz - 親の上の子:
Item {
    Rectangle {
        color: "red"
        width: 100; height: 100
        Rectangle {
            color: "blue"
            x: 50; y: 50; width: 100; height: 100
        }
    }
}

z
Item {
    Rectangle {
        color: "red"
        width: 100; height: 100
        Rectangle {
            z: -1
            color: "blue"
            x: 50; y: 50; width: 100; height: 100
        }
    }
}

メソッド・ドキュメント

point mapFromItem(Item item, point p)

point mapFromItem(Item item, real x, real y)

rect mapFromItem(Item item, real x, real y, real width, real height)

rect mapFromItem(Item item, rect r)

item の座標系にある点 (x,y) または矩形 (x,y,width,height) を、 このアイテムの座標系にマップし、マップされた座標に一致するpoint またはrect を返す。

アイテムの以下のプロパティがマッピングに使われる:x yscalerotationtransformOrigintransform

アイテムが異なるシーンの一部である場合、マッピングは2つのシーンの相対位置を含む。

itemnull の値の場合、これはシーンの座標系から point または rect をマッピングする。

point と rect を受け付けるバージョンは Qt 5.15 以降です。


point mapToItem(Item item, point p)

point mapToItem(Item item, real x, real y)

rect mapToItem(Item item, real x, real y, real width, real height)

rect mapToItem(Item item, rect r)

このアイテムの座標系にある点 (x,y) または矩形 (x,y,width,height) をitem の座標系にマップし、マップされた座標に一致するpoint またはrect を返します。

マッピングでは、アイテムの以下のプロパティを使用する:x yscalerotationtransformOrigintransform

アイテムが異なるシーンの一部である場合、マッピングは2つのシーンの相対位置を含む。

itemnull 値の場合、これは point または rect をシーンの座標系にマップする。

point と rect を受け付けるバージョンは Qt 5.15 以降です。


childAt(real x, real y)

このアイテムの座標系内の点 (x,y) で見つかった、最初に見える子アイテムを返します。

そのようなアイテムがない場合はnull を返します。


bool contains(point point)

このアイテムがローカル座標のpoint を含んでいる場合はtrue を返し、そうでない場合はfalse を返します。これは、イベント配信中のQEventPoint のヒットテストに使用されるチェックと同じであり、containmentMask が設定されている場合はその影響を受ける。


[since 6.3] dumpItemTree()

このアイテムとその子から始まるItemsのビジュアルツリーの詳細を再帰的にダンプします。

出力はこのQMLコードと似ています:

function dump(object, indent) {
    console.log(indent + object)
    for (const i in object.children)
        dump(object.children[i], indent + "    ")
}

dump(myItem, "")

より詳細な情報が必要な場合は、独自の関数を実装し、特定のプロパティの値などの追加出力をconsole.logに追加することができます。

このメソッドはQt 6.3で導入されました。

QObject::dumpObjectTree()も参照してください


forceActiveFocus()

アイテムにアクティブフォーカスを強制します。

このメソッドは、アイテムにフォーカスを設定し、オブジェクト階層内のすべての祖先FocusScope オブジェクトにもfocus が与えられるようにします。

フォーカスが変更された理由はQt::OtherFocusReason になります。オーバーロードされたメソッドを使用して、フォーカスの理由を指定することで、フォーカスの変更をより適切に処理できるようになります。

activeFocusも参照して ください。


forceActiveFocus(Qt::FocusReason reason)

これはオーバーロードされた関数です。

与えられたreason を持つアイテムにアクティブ・フォーカスを強制的に設定します。

このメソッドは、アイテムにフォーカスを設定し、オブジェクト階層内のすべての祖先FocusScope オブジェクトにもfocus が与えられるようにします。

activeFocus およびQt::FocusReasonも参照して ください。


bool grabToImage(callback, targetSize)

アイテムをメモリ内イメージに取り込みます。

取り込みは非同期に行われ、取り込みが完了するとJavaScript関数callback が呼び出されます。コールバックは引数を1つ取り、グラブ操作の結果であるItemGrabResult オブジェクトを受け取ります。

targetSize を使ってターゲット画像のサイズを指定します。デフォルトでは、結果はアイテムと同じサイズになります。

グラブを開始できなかった場合、関数はfalse を返します。

次のスニペットは、アイテムを取り込み、その結果をファイルに保存する方法を示しています:

Rectangle {
    id: sourceRectangle
    width: 100
    height: 100
    focus: true
    gradient: Gradient {
        GradientStop { position: 0; color: "steelblue" }
        GradientStop { position: 1; color: "black" }
    }

    Keys.onSpacePressed: {
        sourceRectangle.grabToImage(function(result) {
           result.saveToFile("something.png")
        })
    }
}

次のスニペットは、アイテムを取得し、その結果を別の image 要素で使用する方法を示しています:

Image {
    id: image
}

Keys.onSpacePressed: {
    sourceRectangle.grabToImage(function(result) {
        image.source = result.url
    }, Qt.size(50, 50))
}

注意: この関数は、アイテムを画面外のサーフェスにレンダリングし、そのサーフェスを GPU のメモリから CPU のメモリにコピーします。ライブ」プレビューには、layers またはShaderEffectSource を使ってください。


point mapFromGlobal(real x, real y)

グローバル座標系にある点 (x,y) をアイテムの座標系にマップし、マップされた座標に一致するpoint を返します。

マ ッ ピ ン グには、 ア イ テムの以下のプ ロ パテ ィ が用い ら れます:x yscalerotationtransformOrigintransform

アイテムが異なるシーンの一部である場合、マッピングは2つのシーンの相対位置を含む。


point mapToGlobal(real x, real y)

このアイテムの座標系にある点 (x,y) をグローバル座標系にマップし、マップされた座標に一致するpoint を返す。

マッピングには、アイテムの以下のプロパティが使用される:x yscalerotationtransformOrigintransform

アイテムが異なるシーンの一部である場合、マッピングには2つのシーンの相対位置が含まれる。


nextItemInFocusChain(bool forward)

このアイテムの隣にあるフォーカスチェーンのアイテムを返す。forwardtrue の場合、または指定されない場合、それは前方向の次のアイテムである。forwardfalse の場合、後ろ方向の次のアイテムになります。


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