Item QML Type
基本的な視覚的QML型。詳細...
Import Statement: | import QtQuick |
In C++: | QQuickItem |
Inherits: | |
Inherited By: | 35 typesAnimatedSprite, BorderImage, Canvas, Column, ColumnLayout, DropArea, Flickable, Flipable, Flow, FocusScope, Grid, GridLayout, Image, LayoutItemProxy, Loader, MouseArea, MultiEffect, MultiPointTouchArea, ParticlePainter, PathView, PinchArea, Rectangle, Repeater, Row, RowLayout, ShaderEffect, ShaderEffectSource, Shape, SpriteSequence, StackLayout, Text, TextEdit, TextInput, VectorImage, and WindowContainer |
プロパティ
- activeFocus : bool
- activeFocusOnTab : bool
- anchors
- 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
- antialiasing : bool
- baselineOffset : int
- children : list<Item>
- childrenRect
- childrenRect.height : real
- childrenRect.width : real
- childrenRect.x : real
- childrenRect.y : real
- clip : bool
- containmentMask : QObject*
- data : list<QtObject>
- enabled : bool
- focus : bool
- focusPolicy : enumeration
(since 6.7)
- height : real
- implicitHeight : real
- implicitWidth : real
- layer.effect : Component
- layer.enabled : bool
- layer.format : enumeration
- layer.live : bool
(since 6.5)
- layer.mipmap : bool
- layer.samplerName : string
- layer.samples : enumeration
- layer.smooth : bool
- layer.sourceRect : rect
- layer.textureMirroring : enumeration
- layer.textureSize : size
- layer.wrapMode : enumeration
- opacity : real
- palette : Palette
(since 6.0)
- parent : Item
- resources : list<QtObject>
- rotation : real
- scale : real
- smooth : bool
- state : string
- states : list<State>
- transform : list<Transform>
- transformOrigin : enumeration
- transitions : list<Transition>
- visible : bool
- visibleChildren : list<Item>
- width : real
- x : real
- y : real
- z : real
メソッド
- childAt(real x, real y)
- bool contains(point point)
- dumpItemTree()
(since 6.3)
- forceActiveFocus()
- forceActiveFocus(Qt::FocusReason reason)
- bool grabToImage(callback, targetSize)
- point mapFromGlobal(real x, real y)
- point mapFromItem(Item item, point p)
- rect mapFromItem(Item item, rect r)
- point mapFromItem(Item item, real x, real y)
- rect mapFromItem(Item item, real x, real y, real width, real height)
- point mapToGlobal(real x, real y)
- point mapToItem(Item item, point p)
- rect mapToItem(Item item, rect r)
- point mapToItem(Item item, real x, real y)
- rect mapToItem(Item item, real x, real y, real width, real height)
- nextItemInFocusChain(bool forward)
詳細説明
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 プロパティはpressed やreleased のような基本的なシグナルのほか、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 は水平方向に反転され、子アイテム(ListView やRow など)をレイアウトしたり配置したりするアイテムも水平方向に反転されます。
詳しくはLayoutMirroring を参照してください。
アイテムのレイヤー
アイテムは通常、それが属するウィンドウに直接レンダリングされます。しかし、layer.enabled を設定することで、アイテムとそのサブツリー全体をオフスクリーン・サーフェスに委譲することができます。オフスクリーンサーフェス(テクスチャ)のみがウィンドウに描画されます。
アイテムのテクスチャサイズと異なるテクスチャサイズが必要な場合は、layer.textureSize を使用することで可能です。アイテムの一部分だけをテクスチャに描画するには、layer.sourceRect を使います。また、layer.sourceRect を指定して、アイテムの境界を超えるようにすることも可能です。この場合、外側は透明ピクセルでパディングされます。
layer.smooth がtrue
に設定されている場合、アイテムはスケーリングに線形補間を使用し、layer.mipmap がtrue
に設定されている場合、ダウンサンプリングにミップマップを使用します。ミップマッピングは、ダウンスケールされたアイテムの視覚的な品質を向上させる可能性があります。単一の画像アイテムのミップマッピングには、Image::mipmap を使用してください。
レイヤーの不透明度とアイテムの不透明度
アイテム階層にopacity を適用する場合、不透明度は各アイテムに個別に適用されます。これは、不透明度がサブツリーに適用されたとき、望ましくない視覚的な結果につながる可能性があります。次の例を見てください:
非レイヤーの不透明度 |
レイヤーはルートアイテムの不透明度が 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 では、シーン・グラフ・レンダラーによってすでに適用されているテクニックのため、ほとんどの場合、このようなことはありません。バッチ処理のため、過剰な描画呼び出しはすでに削減されており、ほとんどの場合、キャッシュは元のコンテンツよりも多くのピクセルをブレンドすることになります。したがって、オフスクリーンへのレンダリングのオーバーヘッドと、結果のテクスチャの描画に伴うブレンドは、単にアイテムとその子を普通に描画させるよりもコストがかかることがよくあります。
また、レイヤーを使用するアイテムは、レンダリング中にバッチ処理できません。つまり、レイヤー化されたアイテムが多いシーンでは、パフォーマンスに問題が生じる可能性があります。
レイヤーは便利で視覚効果に役立ちますが、ほとんどの場合、効果の間だけ有効にし、その後は無効にする必要があります。
プロパティの説明
アイテムの好ましい幅または高さを定義する。
width またはheight が指定されていない場合、アイテムの有効サイズはimplicitWidth またはimplicitHeight によって決定されます。
ただし、アイテムがレイアウトの子である場合、レイアウトはその暗黙のサイズを使用してアイテムの優先サイズを決定します。こ の よ う な場合、 明示的なwidth またはheight は無視 さ れます。
ほとんどのアイテムのデフォルトの暗黙的サイズは0x0ですが、Image やText のように、オーバーライドできない暗黙的サイズを持つアイテムもあります。
暗黙的なサ イ ズ を設定す る こ と は、 内容に よ っ て優先 さ れ る サ イ ズ を持つ コ ン ポーネ ン ト を定義す る 場合な ど に有用です:
// 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 またはTextEdit のimplicitWidth を使い、幅を明示的に設定すると、テキストを2回レイアウトする必要があるため、パフォーマンス上のペナルティが発生します。
activeFocus : bool |
この読み取り専用プロパティは、アイテムにアクティブフォーカスがあるかどうかを示します。
activeFocusがtrueの場合、このアイテムが現在キーボード入力を受けているか、または現在キーボード入力を受けているアイテムのFocusScope 先祖である。
通常、activeFocus は項目とそれを囲むFocusScope オブジェクトにfocus を設定することで得られる。次の例では、input
とfocusScope
オブジェクトはアクティブフォーカスを持ちますが、ルート矩形オブジェクトは持ちません。
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
に設定します。マージンはアンカー固有であり、アイテムがアンカーを使用しない場合は適用されないことに注意してください。
オフセットは水平方向中央、垂直方向中央、ベースラインアンカーに適用されます。
テキス ト を画像に、 水平方向中央に、 垂直方向下に、 マージン付きでアンカー。 | |
テキストの左側は、画像の右側にマージン付きで固定されます。両方のyプロパティのデフォルトは0です。 |
anchors.fill は、あるアイテムが別のアイテムと同じジオメトリを持つための便利な方法を提供し、4つの方向アンカーをすべて接続することと同じです。
アンカー値をクリアするには、undefined
に設定します。
anchors.alignWhenCentered (デフォルト ) に設定すると、中央揃えアンカーは全ピクセルに整列します。中央揃えされるアイテムが奇数 または を持つ場合、アイテムは半ピクセルに配置されるのではなく、全ピクセルに配置されます。これにより、アイテムは鮮明に描かれます。これが好ましくない場合もあります。たとえば、アイテムを回転させると、中心が丸くなるため、ジッターが発生する可能性があります。true
width height
注意: アイテムをアンカーで固定できるのは、兄弟か親だけです。
詳しくはアンカーレイアウトを参照してください。
antialiasing : bool |
ビジュアル要素で、アイテムがアンチエイリアスを使用するかどうかを決定するために使用されます。場合によっては、アンチエイリアシングを使用するアイテムは、より多くのメモリを必要とし、レンダリングが遅くなる可能性があります(詳細はアンチエイリアシングを参照してください)。
デフォルトは false ですが、派生要素によってオーバーライドされる場合があります。
baselineOffset : int |
アイテムのベースラインの位置をローカル座標で指定します。
Text アイテムのベースラインは、テキストが置かれる仮想線です。テキストを含むコントロールは通常、そのベースラインをテキストのベースラインに設定します。
非テキストアイテムの場合、デフォルトのベースラインオフセット0が使用される。
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 プロパティを使用すると、ビジュアルチャイルドとリソースを自由に混在させることができます。ビジュアルアイテムをデータリストに割り当てるとチャイルドになり、他のオブジェクトタイプを割り当てるとリソースとして追加されます。
ですから、次のように書くことができます:
と書くことができます:
data
プロパティは、Item のデフォルト・プロパティであるため、すべての子アイテムは自動的にこのプロパティに割り当てられるので、一般的には参照する必要はないはずです。
enabled : bool |
このプロパティは、アイテムがマウスイベントとキーボードイベントを受信するかどうかを保持します。デフォルトではtrueである。
このプロパティを設定すると、子アイテムのenabled
の値に直接影響します。false
に設定すると、すべての子アイテムのenabled
の値もfalse
になります。true
に設定すると、明示的にfalse
に設定されていない限り、子アイテムのenabled
の値はtrue
に戻されます。
このプロパティをfalse
に設定すると、自動的にactiveFocus がfalse
に設定され、このアイテムはキーボード・イベントを受け取らなくなります。
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
にアクティブフォーカスを与えることを意味します。
Qt Quick のactiveFocus とキーボードフォーカスも参照してください 。
focusPolicy : enumeration |
このプロパティは、アイテムがフォーカスを受け入れる方法を決定します。
定数 | 説明 |
---|---|
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.Alpha | Qt 6.0 以降、この値は使用されておらず、実際にはRGBA8 と同じ効果を持ちます。 |
ShaderEffectSource.RGB | Qt 6.0 以降、この値は使用されておらず、実際にはRGBA8 と同じ効果があります。 |
ShaderEffectSource.RGBA | Qt 6.0 以降、この値は使用されておらず、実際にはRGBA8 と同じ効果があります。 |
Item Layersも参照してください 。
layer.live : bool |
このプロパティが true の場合、アイテムが更新されるたびにレイヤーのテクスチャが更新されます。そうでない場合は、常にフリーズした画像になります。
デフォルトでは、このプロパティはtrue
に設定されています。
このプロパティは Qt 6.5 で導入されました。
Item Layersも参照してください 。
layer.mipmap : bool |
このプロパティが true の場合、テクスチャに対してミップマップが生成されます。
注意: OpenGL ES 2 の実装の中には、非2乗テクスチャのミップマップをサポートしていないものがあります。
Item Layersも参照してください 。
layer.samplerName : string |
エフェクトのソーステクスチャプロパティの名前を保持します。
この値は、Item がレイヤーのオフスクリーンサーフェスをエフェクトに正しく渡すことができるように、エフェクトのソーステクスチャプロパティの名前と一致する必要があります。
layer.effect 、ShaderEffect 、Item 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.ClampToEdge | GL_CLAMP_TO_EDGE 水平方向と垂直方向の両方 |
ShaderEffectSource.RepeatHorizontally | 水平方向に GL_REPEAT、垂直方向に GL_CLAMP_TO_EDGE |
ShaderEffectSource.RepeatVertically | GL_CLAMP_TO_EDGE 水平方向、GL_REPEAT 垂直方向 |
ShaderEffectSource.Repeat | GL_REPEAT 水平方向と垂直方向の両方 |
注意: いくつかの OpenGL ES 2 実装は、非2乗テクスチャでの GL_REPEAT ラップモードをサポートしていません。
Item Layersも参照してください 。
opacity : real |
このプロパティはアイテムの不透明度を保持する。不透明度は 0.0(完全に透明)から 1.0(完全に不透明)の間の数値で指定します。デフォルト値は 1.0 である。
このプロパティが設定されている場合、指定された不透明度は子アイテムにも個別に適用されます。これは、状況によっては意図しない効果をもたらすことがあります。例えば、下の 2 番目の長方形のセットでは、赤の長方形は 0.5 の不透明度を指定しており、これは、子が不透明度を指定していないにもかかわらず、その青の子の長方形の不透明度に影響します。
アイテムの不透明度を変更しても、そのアイテムがユーザー入力イベントを受け取るかどうかには影響しません。(対照的に、visible プロパティをfalse
に設定するとマウスイベントが停止し、enabled プロパティをfalse
に設定するとマウスイベントとキーボードイベントが停止し、さらにアイテムからアクティブフォーカスが取り除かれる)。
visibleも参照のこと 。
palette : Palette |
このプロパティは、アイテムに現在設定されているパレットを保持する。
このプロパティは、アイテムの要求パレットを記述する。パレットは、すべてのコントロールをレンダリングするときにアイテムのスタイルによって使用され、カスタムコントロールがネイティブプラットフォームのネイティブルックアンドフィールとの一貫性を維持できるようにする手段として利用できます。プラットフォームやスタイルが異なると、アプリケーションのパレットも異なることがよくあります。
デフォルトのパレットはシステム環境に依存します。ApplicationWindow は、すべてのコントロールのデフォルトとして機能するシステム/テーマパレットを維持します。また、特定の種類のコントロールのための特別なパレット・デフォルトがあるかもしれません。コントロールのデフォルト・パレットを設定するには、次のいずれかを行う:
- QML を読み込む前にQGuiApplication::setPalette() にカスタムパレットを渡す。
- qtquickcontrols2.conf ファイルで色を指定する。
アイテムは明示的なパレットプロパティを親から子へ伝搬します。アイテムのパレットの特定のプロパティを変更すると、そのプロパティは、そのプロパティのシステムデフォルトを上書きして、アイテムのすべての子に伝搬します。
このプロパティは Qt 6.0 で導入されました。
Window::palette,Popup::palette,ColorGroup,Palette,SystemPaletteも参照してください 。
parent : Item |
このプロパティは、アイテムの視覚的な親を保持します。
注: ビジュアルペアレントの概念は、QObject ペアレントとは異なります。アイテムのビジュアルペアレントは、必ずしもオブジェクトペアレントと同じとは限りません。詳細は、「概念 - Qt Quick の視覚的な親」を参照してください。
rotation : real |
scale : real |
このプロパティは、このアイテムのスケールファクターを保持する。
スケールが 1.0 より小さい場合、アイテムは小さいサイズでレンダリングされ、1.0 より大きい場合、アイテムは大きいサイズでレンダリングされる。負のスケールを指定すると、アイテムはレンダリング時にミラーリングされます。
デフォルト値は 1.0 です。
スケーリングはtransformOrigin から適用されます。
smooth : bool |
主に画像ベースのアイテムで使用され、アイテムがスムーズ サンプリングを使用するかどうかを決定します。スムースサンプリングは線形補間を使用して実行され、非スムースサンプリングは最近傍を使用して実行されます。
Qt Quick 2.0 では、このプロパティがパフォーマンスに与える影響は最小限です。
デフォルトでは、このプロパティはtrue
に設定されています。
state : string |
このプロパティは、アイテムの現在の状態の名前を保持します。
アイテムがデフォルトの状態、つまり明示的な状態が設定されていない場合、このプロパティは空の文字列を保持します。同様に、このプロパティに空の文字列を設定することで、アイテムをデフォルトの状態に戻すことができます。
Qt Quick Statesも参照してください 。
このプロパティは、このアイテムの可能な状態のリストを保持します。この項目の状態を変更するには、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も参照のこと 。
transformOrigin : enumeration |
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 に変更された場合は変更されません。
この読み取り専用プロパティは、現在表示されているアイテムのすべての子を一覧表示します。子アイテムの可視性は、明示的に変更された場合もあれば、このアイテム(の親アイテム)または別の祖父母の可視性が変更されたために変更された場合もあることに注意してください。
z : real |
兄弟アイテムの積み重ね順序を設定します。デフォルトでは、積み重ね順序は 0 です。
積み重ね順が高いアイテムは、積み重ね順が低い兄弟の上に描画されます。同じスタッキング値を持つアイテムは、表示される順番が下から上に描画されます。負のスタッキング値を持つアイテムは、親のコンテンツの下に描画されます。
次の例は、積み重ね順序のさまざまな効果を示しています。
同じz - より後の子がより前の子の上に:
| |
より高いz が上:
| |
同じz - 親の上の子:
| |
下z
|
メソッド・ドキュメント
item の座標系にある点 (x,y) または矩形 (x,y,width,height) を、 このアイテムの座標系にマップし、マップされた座標に一致するpoint またはrect を返す。
アイテムの以下のプロパティがマッピングに使われる:x y 、scale 、rotation 、transformOrigin 、transform 。
アイテムが異なるシーンの一部である場合、マッピングは2つのシーンの相対位置を含む。
item がnull
の値の場合、これはシーンの座標系から point または rect をマッピングする。
point と rect を受け付けるバージョンは Qt 5.15 以降です。
このアイテムの座標系にある点 (x,y) または矩形 (x,y,width,height) をitem の座標系にマップし、マップされた座標に一致するpoint またはrect を返します。
マッピングでは、アイテムの以下のプロパティを使用する:x y 、scale 、rotation 、transformOrigin 、transform 。
アイテムが異なるシーンの一部である場合、マッピングは2つのシーンの相対位置を含む。
item がnull
値の場合、これは point または rect をシーンの座標系にマップする。
point と rect を受け付けるバージョンは Qt 5.15 以降です。
このアイテムがローカル座標のpoint を含んでいる場合はtrue
を返し、そうでない場合はfalse
を返します。これは、イベント配信中のQEventPoint のヒットテストに使用されるチェックと同じであり、containmentMask が設定されている場合はその影響を受ける。
|
このアイテムとその子から始まる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 を使ってください。
nextItemInFocusChain(bool forward) |
このアイテムの隣にあるフォーカスチェーンのアイテムを返す。forward がtrue
の場合、または指定されない場合、それは前方向の次のアイテムである。forward がfalse
の場合、後ろ方向の次のアイテムになります。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。