このページでは

C

ビジュアルペアレント

Qt Quick Ultraliteでビジュアルシーンを作成する場合、ビジュアルペアレントの概念を理解することが重要です。

Qt Quick Ultraliteのビジュアルペアレントの概念は、QObject の親階層におけるオブジェクトペアレントの概念とは別のものですが、関連しています。すべてのQMLオブジェクトはオブジェクトの親を持ちますが、その親はオブジェクトが宣言されたオブジェクト階層によって決まります。QtQuick モジュールを使用する場合、Item 型はこのモジュールが提供するすべてのビジュアルアイテムの基本型であり、アイテムのparent プロパティによって定義される追加のビジュアルペアレントの概念を提供します。すべてのアイテムはビジュアルペアレントを持ちます。

あるアイテムを他のアイテムの子として宣言しても、子アイテムが自動的に適切な位置に配置されたり、親アイテムの中に収まるようなサイズになったりするわけではありません。QMLの型によっては、子アイテムの配置に影響を与えるような動作が組み込まれている場合があります。例えば、Row のオブジェクトは自動的に子アイテムを水平に配置し直しますが、これは各タイプ固有の実装によって強制される動作です。さらに、親アイテムは、そのclip プロパティがtrue に設定されていない限り、子アイテムを自動的にクリップして、親のビジュアルバウンズ内に視覚的に収めることはありません。

重要: Qt Quick Ultralite はparent プロパティを読み取り専用として実装していることを覚えておいてください。つまり、アイテムの視覚的な親を変更するQt Quick コードはQt Quick Ultralite ではコンパイルされません。

アイテム座標

アイテムの座標はビジュアルの親からの相対座標であるため、ビジュアル階層の変更によって影響を受ける可能性があります。詳しくはビジュアル座標を参照してください。

スタック順序

Qt Quick Ultraliteのアイテムは再帰的描画アルゴリズムを使って、衝突した場合にどのアイテムが上に描画されるかを決定します。一般的に、アイテムは親アイテムが作成された(またはQMLファイルで指定された)順番に上に描画されます。つまり、次の例では、青い矩形は緑の矩形の上に描画されます:

Rectangle {
    color: "#272822"
    width: 320
    height: 480

    Rectangle {
        y: 64
        width: 256
        height: 256
        color: "green"
    }

    Rectangle {
        x: 64
        y: 172
        width: 256
        height: 256
        color: "blue"
    }
}

このアルゴリズムはビジュアルアイテムの階層を再帰するため、緑の長方形の子アイテムは青い長方形の下に描画され、青い長方形の子アイテムの下にも描画されます。

積み重ねの順序はItem::z プロパティで指定できます。Z 値が 0 より小さい場合は親の下にスタックし、Z 値が割り当てられている場合は、兄弟は Z 順にスタックします(同順位を解消するために作成順が使用されます)。

Z 値は、兄弟や親アイテムとのスタッキングにのみ影響します。親アイテムの上にルートされたサブツリーによって隠されているアイテムがある場合、そのアイテムに Z 値を割り当てても、そのサブツリーの上にスタックするようにスタック順序を増やすことはできません。そのアイテムを他のサブツリーの上にスタックさせるには、さらに上の階層でz値を変更するか、ビジュアルアイテムの階層を再配置する必要があります。

Rectangle {
    color: "#272822"
    width: 320
    height: 480

    Rectangle {
        y: 64
        z: 1
        width: 256
        height: 256
        color: "green"

        Rectangle {
            x: 192
            y: 64
            z: 2000
            width: 128
            height: 128
            color: "red"
        }
    }

    Rectangle {
        x: 64
        y: 192
        z: 2
        width: 256
        height: 256
        color: "blue"
    }
}

上の例では、赤い長方形は高い z 値を持っていますが、まだ青い長方形の下にスタックされています。これは緑の長方形の子であり、緑の長方形は青の長方形の兄弟だからです。緑の長方形のz値は青の長方形よりも低いので、緑の長方形とすべての子は青の長方形の下にスタックされます。

特定の Qt ライセンスの下で利用可能です。
詳細はこちら。